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

番外編;SO1602は16文字×2行のキャラクタ表示OLED

 SO1602は、LCDではなくOLED(有機EL)なので、文字自体が発光して視認性が高いです。欠点は約50mAという消費電流です。今まで使ってきたLCDは数mAの消費電流でした。連載の1回目のAQM0802より表示面積は広い16文字×2行の表示器です。ライブラリは同じものを利用するので、インストール方法は連載1回目の記事を参照ください。

 SO1602は、秋月電子通商から2017年7月現在、1580円で販売されています。今回用いたのは白色ですが、緑色と黄色の製品もあります。

AQM0802と設定が1か所異なる

 AQM0802のライブラリを利用します。AQM0802とSO1602では異なる部分があります。1か所、修正します。「ドキュメント\Arduino\libraries\FaBo_213_LCD_mini_AQM0802A\src」に入っています。

スレーブ・アドレス 0x3e -> 0x3c

 ヘッダ・ファイル FaBoLCDmini_AQM0802A.hの変更部分

//#define AQM0802A_SLAVE_ADDRESS 0x3E ///< AQM0802A I2C Slave Address
#define AQM0802A_SLAVE_ADDRESS 0x3c ///< ACM1602NI I2C Slave Address

データの書き込みコード 0x40 -> 変更なし

 C++のプログラム FaBoLCDmini_AQM0802A.cpp

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

 前回と同様に、Arduino Unoと接続します。SO1602は3.3V用なのですが、絶対最大電源電圧は5.5Vなので、Arduinoでも使えます。3番ピンはチップ・セレクトで、負論理なのでGNDに接続します。

 4番はスレーブ・アドレスの下一桁の設定端子です。解放だと0なので、0x3cになります。5番と6番はNCなので、何も接続しません。10番以上も無接続です。

Arduinoの端子 ACM1602の端子
5V VDD(2番)
GND VSS(1番)と /CS(3番)
SCL SCL(7番)
SDA SDA(8と9番)

 スケッチはAQM1602用を少し修正しました。初期化は、AQMシリーズのように拡張命令がないので、特別なコードは不要です。

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

void setup() {
// set up the LCD:
lcd.begin();

// 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);
}

 明るいところでの表示例です。

 暗いところでの表示例です。