Picの時ではついにやらなかったLCDを動かしてみた。
9年前のLCDを引っ張り出して、昔電源のPINが普通と違うからという記事があったので超慎重に配線を確認
データシートはこんな感じ。
LCDを上から見た図を書いて、どのピンに繋ぐかを書いてみた。②とかがpin番号
LCDの7,8,9,10は使わない4ビットモードで動作させる。LCDライブラリには8ビットモード用のパラメータも用意されている。
VOは本当は10kΩの可変抵抗を入れる。トップ写真では入れている。
あっけなく完成・・・ではなかった。
接触が悪いのか、変な表示が出たり、上一列だけ豆腐が16個表示されたり。配線は何度も再確認した。
さらにもう一個持っていたLCDもコネクタ半田付けしてテストしても同じ状態(使いたくなかったのだがしょうがない)
配線を全部引っこ抜いて再配線したらあっさリ動いた。何だったのだろう。本当に解らない。
シールド基盤にする理由が少しわかった。毎回配線するのも面倒だ。
ソースはたったこんだけ。
#include
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Pin割り当て こんな風に書くのか
void setup() {
lcd.begin(16, 2);
lcd.clear(); // 無くてもイイみたい
lcd.setCursor(0,0); // 無くてもイイみたい
lcd.print("hello, world!");
}
void loop() {
lcd.setCursor(0, 1);
lcd.print(millis()/1000);
}
参考:RWはGNDに落として書き込みモードのみで動かすけど、RWを有効にしておくと、0~8番のアドレスに自分のキャラクタをBITMAPで定義できるそうです。
この場合は、LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);とpinアサインを書きます。