I2C接続AQMシリーズのキャラクタ表示LCDをArduinoで使う (2) AQM1602

AQM1602は16文字×2行のキャラクタ表示LCD

 前回のAQM0802より表示文字数の多い表示器です。ライブラリは同じものを利用するので、インストール方法は前回の記事を参照ください。

 AQM1602は、狭いリード線のピッチを変換する基板付きで秋月電子通商から2017年7月現在、550円で販売されています。

AQM0802と同じスケッチを動かす

 前回と同様に、Arduino Unoと接続します。AQM1602はシンプルに4本しか端子がありません。

Arduinoの端子 AQM1602の端子
5V V+
GND GND
SCL SCL
SDA SDA

 スケッチはAQM0802と同じものを動かしましたが、何も表示されませんでした。

 コメント・アウトしていた元の lcd.begin() を生かすと、表示が出ました。AQM0802では電圧の表示の最後のVがはみ出していたのですが、こちらのAQM1602ではしっかり表示されています。

 AQM0802とAQM1602は、コントラストなどは拡張命令で制御します。

#include <Wire.h>
#include <FaBoLCDmini_AQM0802A.h>
FaBoLCDmini_AQM0802A lcd;
int sensorPin = A0;
int sensorValue = 0;

void setup() {
// set up the LCD:
lcd.begin();
lcd.command(0x38);
lcd.command(0x39);
lcd.command(0x14);
lcd.command(0x73);
lcd.command(0x51);
lcd.command(0x6c);
lcd.command(0x38);
lcd.command(0x01);
lcd.command(0x0c);
// Print a message to the LCD.
lcd.print("hello!");
delay(10000);
}
void loop() {
lcd.clear();
sensorValue = analogRead(sensorPin);
lcd.print(sensorValue); lcd.print(" ");
lcd.print(sensorValue/1024.0*5.0); lcd.print("V");
delay(1000);
}

※前回AQM0802は、ライブラリFaBoLCDmini_AQM0802Aのbegin()では初期化が十分ではなく、ブースタをOFFするcommand(0x51)などを追加することで、文字を表示できました。AQM0802は本来3.3Vで動作するものですから、このライブラリを作成したときに使われている製品には、5V-3.3Vの変換回路が入っているのかもしれません。

※ライブラリFaBoLCDmini_AQM0802Aのヘッダ・ファイルには、スレーブ・アドレスが、0x3eと固定されています。AQM1602のデータシートには0x7cと書かれています。マスタがスレーブのLCDに対してスレーブ・アドレスを指定するとき、最後にRead/Writeビットを追加します。LCDはライト・オンリなので、8ビットの0x7c(01111100)の最後のwriteビット0を取り去ると0111110=0x3eになります。