手持ちのLCDはどれもI2CやSPIに対応していないものだったので、aitendoのI2C/SPI対応のLCDを試してみることにした。
材料
商品名 | 購入先 | 価格 |
Arduino Nano(Clone品) | 中国の謎バイヤー | \500 |
I2C/SPIキャラクタ液晶モジュール(16×2) [ATD1602A-14] | aitendo | \500 |
ピンヘッダー | aitendo | \25 |
合計:1,025円
I2Cだけあればよかったが、せっかくなのでSPIも使えるものを選んでみた。
Aliexpressで探すと
ピンアサイン
この製品は何故かわからないがJ1とJ2という2つのpin部分があり、J1は6pin、J2は5pinと異なっている。データシートによると、J1にだけある4番目のPSBは入力がHighのときはI2Cインタフェース、LowのときはSPIインタフェースということになっている。
I2CとSPIをプログラムから切り替えて使うとか利用シーンが思いつかないし、使いどころが分からないのでJ2だけ使うことにする。
J1
No. | Symbol | Function |
1 | VSS | Ground (0V) |
2 | VDD | Supply Voltage for Logic (+5.0V ) |
3 | CS | Chip select pin. ”L” : 3-Line Interface, “open” : I2C Interface |
4 | PSB | ”H” : I2C Interface, ”L” : 3-Line Interface |
5 | SCK | serial clock |
6 | SDA | serial data input |
J2
No. | Symbol | Function |
1 | VSS | Ground (0V) |
2 | VDD | Supply Voltage for Logic (+5.0V ) |
3 | CS | Chip select pin. ”L” : 3-Line Interface, “open” : I2C Interface |
4 | SCK | serial clock |
5 | SDA | serial data input |
配線
I2Cで使用するときは3番ピンのCSには何もつながない。VSS→GND、VDD→VIN(5V)、SDA→A4、SCK→A5に繋ぐ。
ソースコード
販売先のaitendoが動作確認に使用したとするライブラリのLCD_ST7032はgithubにある。LCD_ST7032はライブラリマネージャからのインストールも可能。(参考:ライブラリの追加方法)
データシートによるとドライバICはAIP31068LとなっているがST7032用でも問題ないようだ。
ライブラリの中にサンプルとしてHelloWorldが入っているので実装の参考にできる。
//-------------------------------------------------------------------------------------------
// Tested Module : ERC1602-4, EASTRISING TECHNOLOGY CO,.LTD.
// Drive IC : ST7032
// INTERFACE : I2C
// VDD : 2.7V-5.5V
// Tested with MCU : Arduino Uno, Attiny85@1mhz(5.0V), Attiny85@8mhz(5.0V) and ESP8266(3.3V)
//-------------------------------------------------------------------------------------------
#include <LCD_ST7032.h>
LCD_ST7032 lcd;
void setup() {
lcd.begin();
lcd.setcontrast(24); //contrast value range is 0-63, try 25@5V or 50@3.3V as a starting value
}
void loop() {
static int counter = 0;
// Write a piece of text on the first line...
lcd.setCursor(0, 0); //LINE 1, ADDRESS 0
lcd.print("Hello World");
// Write the counter on the second line...
lcd.setCursor(1, 0);
lcd.print(counter/10, DEC);
lcd.write('.');
lcd.print(counter%10, DEC);
lcd.write(' ');
delay(500);
counter++;
}
動作テスト
配線が正しく、プログラムにも問題がなければ1行目に「Hello World」、2行目にカウントアップされる数字が表示される。
感想
おすすめ度:★★★★★
4本配線するだけで済むので配線作業がとても楽になります。値段もそんなに高くなりませんし、これから買う人はI2CかSPI対応のLCDを購入することを強くおすすめします。