[Arduinoのすすめ][ArduinoConf][ArduinoMonitor][iArduino]

ストロベリー・リナックス/秋月電子のI2C液晶/OLEDほかをArduinoで使う

ストロベリー・リナックスや秋月電子からI2C接続のキャラクタ液晶/OLEDが発売されています。 I2C接続だと配線が少なくて便利です。そこで ArduinoのLiquidCrystalライブラリに少し変更を加えて I2CLiquidCrystalライブラリとして準備してみました。

接続例1 (ST7032iタイプ, 液晶)

Arduinoと液晶間の接続は4本だけです。2本のプルアップ抵抗を忘れないようにします。 この液晶は3.3V動作ができることが売りの一つですが、 Arduino側の電源が5Vのときには、それにあわせて5Vで利用します。もちろん Arduno Proなどで 3.3V動作の時には3.3Vで接続します。

Arduino LeonardなどSDA, SCLピンがある場合には、A5, A4ではなく、それらのピンへつなぎます。 対応する液晶は

などコントローラが Sitronix の ST7032i のものです。表示文字数についてはlcd.begin()で指定します。バックライトの有無については説明書に従って配線してください。

接続例2 (ACM1602NIタイプ, 液晶)

Arduinoと液晶間の接続は4本です。2本のプルアップ抵抗を忘れないようにします。 液晶のコントラストは外付けの半固定抵抗で調整します。 この液晶は3.3V動作ができることが売りの一つですが、 Arduino側の電源が5Vのときには、それにあわせて5Vで利用します。もちろん Arduno Proなどで 3.3V動作の時には3.3Vで接続します。 5Vのときにはバックライト用 LED の電流制限抵抗を忘れないようにします。

Arduino LeonardなどSDA, SCLピンがある場合には、A5, A4ではなく、それらのピンへつなぎます。 対応する液晶は

などです。

接続例3 (SO1602Aタイプ, OLED)

ArduinoとOLED間の接続は4本です。2本のプルアップ抵抗を忘れないようにします。 OLEDのコントラストはソフトウェアで設定します。 OLEDの電源は 3.3V ですので、プルアップ抵抗の接続先も 3.3V にします。ほかに I2Cデバイスがあるときなど条件が悪いとうまく動作しないかもしれません。 SA0はL(GND)もしくはH(3.3V)へ固定します。下の回路図ではLです。 CS, SA0, SDA in/out の配線などは OLED モジュール上で済ませてもよいでしょう。

Arduino LeonardなどSDA, SCLピンがある場合には、A5, A4ではなく、それらのピンへつなぎます。 対応するOLEDモジュールは

などです。

接続例4 (Grove LCD RGB backlight, 液晶)

Grove のケーブルを使って I2C のコネクタへ接続するだけです。電源電圧は5Vです。対応する液晶モジュールは

です。

ライブラリ

ライブラリの使い方はLiquidCrystalライブラリとほぼ一緒です。LiquidCrystalライブラリで

// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
となっていたところをST7032iタイプ(液晶)では
// include the library code:
#include <I2CLiquidCrystal.h>
#include <Wire.h>

// initialize the library
I2CLiquidCrystal lcd(20, (bool)true);
                  //  |          +--- set true if the power suply is 5V, false if it is 3.3V
                  //  +-------- contrast (0-63)
とします。ライブラリの名前の先頭にI2Cがつき、Wire(I2C)ライブラリを読み込んでいます。またピンの設定の代わりに、コントラストと電源電圧の設定になっています。コメントにあるように上記のlcd(20, true)の20がコントラストを表す数値(0から63で、大きいほど濃い)で、trueが電源電圧が5Vのときの設定です。3.3Vのときにはfalseにします。

ACM1602NIタイプ(液晶)では

// include the library code:
#include <I2CLiquidCrystal.h>
#include <Wire.h>

// initialize the library
I2CLiquidCrystal lcd;
とします。コントラストは外付けボリュームを使うので宣言するだけです。

SO1602Aタイプ(OLED)では

// include the library code:
#include <I2CLiquidCrystal.h>
#include <Wire.h>

// initialize the library
I2CLiquidCrystal lcd(0x3c, (uint8_t)127);
                  //  |             +--- contrast (0-255)
                  //  +-------- I2C ADDR (SA0=L: 0x3c, SA0=H: 0x3d)
とします。0x3cの部分はSA0をLにする(0x3c)かHにする(0x3d)かで変えます。127はコントラスト(輝度)で0から255(0xff)の値です。0にしても消灯はしません。

Grove LCD RGB backlight(液晶)では
// include the library code:
#include <I2CLiquidCrystal.h>
#include <Wire.h>

// initialize the library
I2CLiquidCrystal lcd(LCD_GROVE_RGB);
とします。

バックライトの色を変えるには lcd.begin() より後で lcd.setRGB()を使います。次の例では

  lcd.begin(16, 2);
  lcd.setRGB(0, 255, 0);
バックライトを緑にしています。色の指定は R, G, B の順で 0から255が有効な値です。

I2Cバスの選択

Arduino Due などで Wire1 を使いたいときには

  lcd.setWire(&Wire1);
と書く事で Wire1 を利用できます。なお、Arduino Due 内蔵のI2Cバス0のプルアップ抵抗が小さすぎる場合があるそうです。その場合にはバス1 (Wire1) を試すか、プルアップ抵抗を外して外付けにしてみてください。

カナの利用

半角カナを利用したいときには Konnichiwa スケッチを参考にしてください。UTF-8形式でスケッチを保存(デフォルト)すれば、kana()関数で半角カナを表示できます。kana()関数は英数字も扱えるので print 関数代わりにも使えます。ただし文字コード変換のため遅くなります。

例:

  lcd.kana("コンニチワセカイ");

スケッチの例

LiquidCrystalライブラリ付属のスケッチ

LiquidCrystalライブラリのスケッチの例については、この液晶で動作することを確かめています。どんなことが出来るかは動かして確かめてください。

pinTestDigital

自由になるピン数が多いことを生かして、すべてのピンについてデジタル入力(出力)の状態を表示するスケッチを作ってみました。写真のように上の段にピンの番号、下の段に値(H/L)を表示します。そのまま使ってテスターのようにしてもいいですし、自分のスケッチに組み込んでも、よいと思います。

pinTestAnalog

アナログ入力の値を表示するスケッチを作ってみました。写真のように上の段にピンの番号(A0からA3)を、下の段に値(0から1023)を表示します。テスターのように使ったり、自分のスケッチに組み込んでも、よいと思います。Arduinoのアナログ入力は電源電圧によって値が少し変化するので、その点には注意して下さい。

toneKey

電子ピアノのスケッチにpinTestDigitalを組み込んだ例です。電子ピアノとしてスイッチを押すと音が鳴ります。pinTestDigitalの機能は、そのまま使っていてスイッチを押すとピンの表示がLに変わります。デジタル出力ピン(LEDとtoneに使っている)の値も表示されます。


ブレッドボードに組んだ様子

電子ピアノの回路図

ファイル

ファイルをダウンロードしたら、Arduino IDE のメニュー「スケッチ」→「ライブラリーをインクルード」→「.ZIP形式のライブラリーをインストール...」をクリックし、ダウンロードしたファイルを追加するか、Arduinoフォルダ(デフォルトではマイドキュメント(Windows)もしくは、書類(Mac OS X)にある)の中のLibrariesフォルダ(ない場合には作る)に、zipファイル内のI2CLiquidCrystalフォルダをコピーします。

1.5以降のライブラリには MGLCD ライブラリ (モノクログラフィックLCDモジュールを Arduino で使うためのライブラリ)用に作られた mglcd.cpp と mglcd.h を利用しています。それらのファイルのライセンスは LGPL バージョン2.1以降です。

履歴


戻る
(c) 2012-2014 N. Mitsunaga (mnoriaki (at mark) gmail.com)