症状:
”■”→”_”→”■” というように、カーソルが一つだけ表示され、点滅を繰り返すだけで後は何も表示されない。二行表示モードのはずが、一行だけ表示されているっぽい。


原因:
単に初期設定で、”ANSELB = 0b00000000”が抜けているからだった。

似たような症状の人のヒントになるとうれしいが、残念ながらすごく初歩的な話なので、こいつアホかで終わるかもしれない。

昨日までは、ネットで探してきたソースを元にいろいろやっていたが、今日はデータシートを読みながら色々改変。ビット一つ一つまで確認したが、何が悪いか全然分からない。これはLCDが壊れているのではないか、二つとも同じ症状だから二つとも壊れているのでは、と考えた。順番として、LCDが正常であることが担保できていることが先決だが、二つとも壊れているとは考えがたいので、LCDは正常ということにして作業していた。が、やっぱり真っ先に確認すべきことだったのだろう。 

まずやったのは、arduinoのLCDシールドからLCDを引っぺがして同じ回路につなぐこと。だが、意外に頑強にくっついていて剥がれない。半田を結構吸い取っても、グルーガンか何かでくっつけてあるみたいで剥がれない。そうでなくても半田を剥がすというのは大変だということが分かった。途方にくれていたが、よくよく考えたらLCDをarduinoにつなげば良いわけで、arduino用のLCDを引っぺがしてこちらの回路につなぐ必要は無い。何でこんなことに気がつかないのか我ながら驚きだ。 arduinoでのテストは各一分もあれば終わる。どちらも異常なし。散々悩んで行を削ったりしたが、前述の通り、単に初期設定で、”ANSELB = 0b00000000”が抜けているからだった。アナログ出力する場合だけ設定すると思い込んでいたけど、これって必ず必要なのね。 

何でもそうだが、勘所というものがある。考えなくても原因が直感できることだ。初めての分野ではそれがないので、何処がどう間違っているか五里夢中で途方にくれることになる。この一行だけで丸二日半。尚、パスコンやプルアッププルダウン抵抗、各種ディレイ、ポートを分ける等、前回試したものはすべてなくても動いた。えらいこと遠回りだったが、久しぶりに大きな達成感を感じた。 ちょっとアホだったが。