左写真は、液晶キャラクターディスプレイモジュールと言い、左上画面(表面)のLCD(液晶)スクリーンに数字や文字を表示するものです。
下は裏面で、中央に大きな(古い)ICが1個(この1個が後々問題に、、、)デーンと鎮座しています。 この HD44780 というICはこれら液晶キャラクターディスプレイモジュール駆動する、世界標準とされ、おかげで我々にも様々な使い方ができるようになっています。
ことのきっかけは、私が別途進めているプロジェクトで動作状況をモニターするディスプレイが必要だったのです。
読み取る内容は16文字x1行で十分足りると思ったので、かつて超廉価で購っておいたこのディスプレイを使ってみようと思い立ったのです。
基本的にこれらディスプレイの制御には Arduino を使いますが、標準ではその制御に、電源のほか6本もの線が必要となります。たかがこれしきの事に6本は問題外で、過日このブログで述べた「 通常の LCD を I2C 化する 」I2C(アイ・スクエアド・シー Inter-Integrated Circuit 2線式シリアル・バス規格)を使うことにしました。
右上写真は、Arduino と液晶キャラクターディスプレイモジュールのインターフェイスに使う PCF8574 というICで、その右側の赤とブルーの小さな基板は使いやすくするために基板化されたものです。
左がその回路図、下写真が実装状況です。
液晶キャラクターディスプレイモジュールの I2C 接続は経験があるといっても8年も前の話で、Arduino の Library も更新されており予備実験が必要でした。
Library は LiquidCrystal_I2C.h を使いますが、表現は以下のたった2行で事足ります。
LiquidCrystal_I2C lcd(0x20 , 16 , 1 ); // 0x20 は上回路図 A2,A1,A0 で表現されるI2Cアドレス、16,1 は16文字1行を表します。
万事順調のように思われたのですが、ここで奇妙なことが起こりました。テストのため、
lcd.print("ABCDEFGHIJKLMNOP"); で16文字を表示させるつもりが、 左写真のように、8文字しか表示されません???
そこで色々調べた結果、16文字x1行のディスプレイとはいっても2種類あることがわかりました。
一つはそのまま16文字が表現できるもの、もう一つは(8文字)+(8文字)となっているもので、このディスプレイはそれにあたるようです。
このことは、前述した HD44780 というICが1個であることによるらしく、
LiquidCrystal_I2C lcd(0x20 , 8 , 2); // 8文字x2行 のように取り扱う必要があるよう です。ちなみに
0 件のコメント:
コメントを投稿