Arduino
lcd

1602LCDをI2C変換アダプタを使ってArduinoで表示する。

■概要

自分はインターフェースマニアなのか、LCDを見ると何となく買ってしまう。
だけど、LCD関係はとにかくピンがいっぱいあるのでどう繋げればいいのかわからず手を出しにくかった。
そんな中、AmazonでI2Cに変換できるというのがあったので使ってみようと思い立った。

■使用パーツ

  • SD1602VBWB-XA-G-R(秋月で300円で投げ売りされてた)
  • LCD-I2C アダプタ(FC-113?)
  • Arduino nano(ELEGOO互換機)

■配線

(トップ写真ではLED電源をArduinoから持ってきてたけど、写真取った後でアダプタから取ればいいじゃんって思い直した)

秋月のHPからほぼ同じ名前のデータシートを引っ張ってきて、配線を確認。どうも15,16ピンを入れ替えているようなので、2ピンずらさなければならない模様。ちょっと惜しい。
適宜自分のLCDのピンアサインを確認して望まれたい。

SD1602PIN FC-113PIN
15 LED A(3.2) --
16 LED K(0V) --
1 VSS(0V) 1
2 VDD(5V) 2
3 V0(--) 3
4 RS 4
5 R/W 5
6 E 6
7 DB0 7
8 DB1 8
9 DB2 9
10 DB3 10
11 DB4 11
12 DB5 12
13 DB6 13
14 DB7 14
-- VCC(3.2V) 15
-- VSS(0V) 16
FC-113 Arduino nano
GND GND
VCC 5V
SDA A4
SCL A5

■スケッチ

ネットで適当にLiquidCrystal_I2Cのライブラリを拾ってインポート。
注意点は、I2Cのアドレスがこのスケッチの初期値は0x27となっている所。(分かるようにコメント欄はあえて変えていない)
参考サイトを見ていると、内蔵チップの種類に応じて初期アドレスが変わっている様子。
チップにPCF8574Aが使われているとアドレス0x3Fとなる みたい。
(購入したAmazonのレビュー欄では0x27と書いている人が多いので、てっきり0x27と思っていたが、表示されなかったので色々調べていた)

HelloWorld.
//DFRobot.com
//Compatible with the Arduino IDE 1.0
//Library version:1.1
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

void setup()
{
  lcd.init();                      // initialize the lcd 

  // Print a message to the LCD.
  lcd.backlight();
  lcd.setCursor(0, 0);
  lcd.print("Hello, world!");
  lcd.setCursor(0, 1);
  lcd.print("Arduino!");
}

void loop()
{
}

サンプルコードからの変更点は、上記アドレス変更のほか、2行目も表示されるか確認したかったので、"Arduino!"のところを加えている。

■まとめ

一般的な?16ピンの1602LCDを、アダプタを使ってI2C変換することを確認。
状態表示のためにはモニタの有無で雲泥の差があるわけだが、ピン数が多くてなかなか導入しにくいLCDモニタ。
それがピン数の消費も少なく汎用的なI2Cで接続できるというのはとても良い。
今回は適当に買ってしまったLCDだったのでピン配置が微妙だったが、ピッタリ合うものと組み合わせれば、LCDの裏面に一体化させることも可能だ。
更にアダプタ自体も一個200円程度と安い。(自分の場合は5コセットで690円だった)
これで、「買ったはいいものの使わずに眠ってるLCD」を起こすことができそうだ。

アダプタが追加になる分、かさばるというのはあるが、そこまで小型化にこだわらないのであれば、電子工作初心者から上級者まで、幅広く使えそうだ。

■参考サイト

[I2C] 1602 LCD ディスプレイ (HD44780 + PCF8574A)-DEKOのアヤシいお部屋。-

↑アドレスで詰まっていたところを救われました。

超小型LCDキャラクタディスプレイモジュール(16×2行 白抜き)秋月

HiLetgo 5V 1602LCD IIC/I2C/TWI/SPIシリアルインターフェイスモジュールポートarduinoに対応 (5個セット) [並行輸入品] Amazon