例のイベント作品を作ってて、マイコンにも簡単なモニターが欲しいと思いました。
来年版は必要時に LCD で最低限の情報を表示できるようにしたい。
I2Cインターフェースの付いた LCD も入手容易と思いますが
手元にある LCD (1602) は I2C なし。
できるだけ追加部品を買わない方針なので、今回はこの I2C インターフェースが付いてない版を使いたいと思います。
まずは LCD の点灯。慣れてないので今回は Arduino nano を使って、文字を出す事を目標とします。
今回の LCD は ELEGOO の Arduino 入門キットに付いていたものなので、同キットの取説を参考に配線をしました。
端子は LCD 向かって左から VSS, VDD と電源があり次の V0 は抵抗を介して GND と繋ぎます。抵抗の大きさでコントラストが変わるようで、今回は 1.8kΩ を使いました。次の RS ピンで書き込むレジスタを選ぶようですが、nano の任意の GPIO に繋いでライブラリにおまかせ。次の RW で Read / Write を決めるようで LCD に表示するにはこのピンを GND に繋げば良いようです。次の E はイネーブルピンで、ここを LOW にすると命令が実行されるようですが、これも nano の任意の GPIO に繋いでライブラリにおまかせ。
ここから右に D0 ~ D3 がありますが、これらは今回使用したライブラリでは使わないようで D4~D7 の4本で英数字を表示します。
右端の A と K はバックライト用のようで A をアノードに、K をカソード(GND)に繋げば配線は終了。
今回の配線です

テストプログラム
#include <LiquidCrystal.h>
#define PIN_RS 3
#define PIN_E 4
#define PIN_D4 9
#define PIN_D5 10
#define PIN_D6 11
#define PIN_D7 12
LiquidCrystal lcd(PIN_RS, PIN_E, PIN_D4, PIN_D5, PIN_D6, PIN_D7);
void setup() {
lcd.begin(16, 2);
lcd.print("Donabe Gohan");
}
void loop() {
char *str = "Donabe Gohan ";
for (int x = 15; x > 0; --x){
lcd.setCursor(x, 1);
lcd.print(str);
delay(200);
}
for (int p = 0; p < 14; ++p){
lcd.setCursor(0, 1);
lcd.print(str + p);
delay(200);
}
}
一行目に固定の文字列
二行目には右から左に流れる文字列を表示できました。
このままでは配線も多いし不便。次の目標は ATtiny か PIC で表示、そのマイコンを I2C のスレーブに、別のマイコンをマスターにしてマスターのマイコンから I2C で LCD を表示。
勉強する事が多そうです。


コメント