I2C液晶ライブラリ

ストロベリー・リナックスのI2C接続できるキャラクタ液晶が手軽で便利そうだったので、いくつか購入。

たったの2線で通信できるので、他の液晶と比べて配線がとても簡単ですし、同じくI2C接続のRTC等とも相性が良いのが特徴です。あとアイコン表示があるのも何か楽しい。写真は秋月で購入したRTCと組み合わせて時計にしてみた例。


例によって(?)、Arduinoで簡単に使えるようにライブラリ化してみました。ダウンロードはこちらから。
http://neocat.jp/arduino/Library-LCD_I2C.zip

展開後のLCD_I2Cフォルダを ~/Documents/Arduino/libraries に入れればインストール完了です。
ArduinoIDEを立ち上げ直し、Files > Examples > LCD_I2C > LCD_I2C_sample を開くと、サンプルスケッチが見られます。

Arduinoと液晶の配線は、

// RESET    - 1 RST
// Analog 5 - 2 SCL (internally pulled up)
// Analog 4 - 3 SDA (internally pulled up)
// GND      - 4 GND
// 5V       - 5 VSS

という感じ。(5Vで繋いでしまっています。液晶コントローラは5V対応ですが、本来この液晶の電圧は3.6Vだそうです。ただコントラストを下げれば5Vでも一応問題なく動作するようです。→参考


ライブラリの使い方ですが、まずLCDライブラリを初期化します。このときコントラスト(0-63)を引数にとれます(省略すると20になります)。

  LCD.begin(16);

文字列を表示するには、次のどちらかが使えます。

  LCD.print(" Welcome to"); // 文字列
  LCD.print('_');         // 文字(1バイト)

任意の位置に文字を表示するには

  LCD.move(0x48);      // 2行目の9文字目
  LCD.print("Arduino");

のようにします。なお1行目の先頭が0x00、2行目の先頭は0x40です。
液晶に表示された文字を消去するには、以下を実行します。

  LCD.clear();

最後にアイコンの表示ですが、

  LCD.icon(7, 0x08);  // <ICON address>, <ICON RAM bits>

のように指定します。どのアドレス/ビットでどのアイコンが点灯するかは、アプリケーションノートを見て下さい。例えば上記だと▼アイコンが点灯します。