1602A I2C アダプターの利用
ここでは 1602A と I2C アダプターを使います。
「Arduino を用いて LCD に文字を表示」では、 LCD モジュール 1602A を利用して、文字を表示する方法を示しました。
そこでは 1602A にそのまま利用しましたが、主電源、バックライトの電源、それから信号を送る等のため、 約10本のワイヤの接続が必要でした。
GPIO ピンが数本しかない小型のボードを使う時などには扱いにくいです。
1602A の I2C アダプターを利用すると、電源 (VCC/GND) と I2C (SDA/SCL) で接続可能で、非常に単純になります。(I2C なのでプルアップは必要)
ここでは 1602A I2C アダプターの利用方法を紹介します。
まず、I2C アダプターは次のようなものです。上が 1602A 液晶ディスプレイ、下が 1602A I2C アダプターです。
この向きに繋がります。
みた限りだいたいどれも似たり寄ったりの動作なのですが、 同様のモジュールが各社から出ていて、詳細は違う可能性は十分なのでデータシートをみてください。 ここはあくまで私の例ということで。
ピンアウトは次の通り。
左側の GND/VCC は、基本的にジャンパーでショートされているのですが、 バックライトを無効化する場合はオープンにします。ちなみに、オープンにしないと必ずバックライトが ON になるのか、 というとそうではなくて、プログラムから制御可能です。
中央のポテンショメータは画面のコントラスト調整用です。
その下のジャンパー A0, A1, A2 はアドレス選択用です。全てオープンにすると 0x27 です。 ジャンパーの設定によって A2, A1, A0 で表される 3 ビット値を 0x27 から引いたアドレスにシフトします。
例えば A2 → ショート (1)、A1 → オープン (0)、A0 → ショート (1) の場合、0b101 = 0x5 ですから、0x27 - 0x5 で 0x22 となります。
右側の 4 ピンは上から GND、VCC、SDA、SCL です。
GND はグランド。VCC は私のモジュールは 2.5V ~ 6V の範囲でした。
I2C インターフェイス SDA、SCL は Arduino Uno ではそれぞれ A4、A5 です。
Arduino Uno R3 | |
---|---|
SDA | A4 |
SCL | A5 |
I2C なので基本的にプルアップが必要です。ここでは下記 LiquidCrystal_I2C ライブラリが内部で Wire ライブラリを利用していますが、これは SDA/SCL ピンについて、Arduino の内部プルアップ抵抗をアクティベートします。
LiquidCrystal_I2C ライブラリ
さてプログラムから文字を出力します。
今回は次の LiquidCrystal_I2C ライブラリを利用しました。
» https://github.com/marcoschwartz/LiquidCrystal_I2C
ZIP でダウンロードして、Sketch → Include Library → Add .ZIP Library... メニューから ZIP を取り込みます。
すると利用可能になるはずです。
尚、Arduino の IDE で取り込まれたライブラリはデフォルトで Linux なら ~/Arduino/libraries に、Windows では My Documents\Arduino\libraries に保存されます。 もし同様の名前のライブラリが同じシステム内に存在してコンパイルが失敗する場合は、不要なライブラリを消して試してみるとよいでしょう。(念のためバックアップを取った方が良いかもしれません)
コードは次の通り。
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() {
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
}
void loop(){
}
配線して、プログラムを Arduino にアップロードすれば次のように表示されるはずです。
配線はこの通りです。
表示がはっきりしない場合はアダプター上のポテンショメータでコントラストを調整します。