ArduinoにLCDを信号線3本で繋ぐ
昨年のMTM04に出品した和音マシンで、入力インターフェースにSFCパッドを使った事は、以前にご紹介しました。そこで、今回は出力インターフェースの一つ、キャラクター液晶ディスプレーの接続について書きたいと思います。
Arduinoにもよく使われるキャラクター液晶ディスプレーですが、そのままArduinoに接続すると、最低でもRS,E,D4,D5,D6,D7の6本の信号線が必要になってしまいます。これをもっと少ない信号線で接続しようと作ったものが、今回の回路です。
シフトレジスタの74HC164を使い、Arduinoの使用ポート数を減らしています。また、74HC164のコントロールに使うData線を、LCDのRSとしても使用することでも使用ポートを増やさない工夫になっています。
左上のコネクタが信号線が3本と+5V電源,GNDで、信号線は左からLatch,Clock,Dataです。
液晶モジュールを外すと、基板に乗った74HC164が見えます。他にコントラスト調整用とバックライト調整用の半固定抵抗、バックライト用スイッチ、バックライト過電流防止用の抵抗等が見られます。
ソフトウェアの方ですが、標準のLCDライブラリを改造して、元と同様に使えるようにしてみました。これなら、いままで標準のライブラリを使っていたスケッチを書きかえるのも非常に簡単になります。改造ライブラリを使ったexampleのHello Worldスケッチを載せますので、参考にしてください。
/* LiquidCrystal Library - Hello World */ // include the library code: #include <LiquidCrystal164.h> // initialize the library with the numbers of the interface pins LiquidCrystal164 lcd(2, 3, 4); void setup() { // set up the LCD's number of rows and columns: lcd.begin(16, 2); // Print a message to the LCD. lcd.print("hello, world!"); } void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // print the number of seconds since reset: lcd.print(millis()/1000); }
元のHello Worldと違うのは、インクルードするヘッダファイル名と、変数生成の所だけです。
他は標準のライブラリと同様です。 |
ダウンロードはこちら
74HC164使用LCDライブラリ:「LiquidCrystal164.zip」
ライブラリのライセンスについてはArduino標準ライブラリと同様LGPLでお願いします。
最近のコメント