LCDディスプレーを使う
LCDディスプレーを使って英数字を表示させてみます。
LCDを使ったディスプレーにはいろんなタイプのものがありますが今回使うのは最もベーシックなものであらかじめ登録された文字のみ表示可能なキャラクタ・ディスプレーです。
- ドットマトリクスサイズ:5x8ドット(文字は5×7ドット表示)
- 表示文字数:2行x16文字
- 表示可能文字:半角英数字・半角記号
- バックライト:白色(オンオフ可能)
この記事ではまずは基本的な使用方法について書いてみます。
目 次
各部構成
LCD表示部
試しに以下の文字をArduino経由で表示させてみました。
制御基板
LCDモジュール+I2Cインタフェース基板という構成。
尚、I2Cインタフェース基板を経由しないでLCDモジュールとArduinoをダイレクトに接続することも可能であるが、その場合接続配線数が4本⇒12本と増加します。
なので、配線数が4本と少なくて簡単なI2Cを使います。
I2Cについて
そもそもの正式名称は「Inter-Integrated Circuit」でしてフィリップス社が開発したシリアルバス規格の名称です。詳細は検索サイト等で調べてもらうとして電子デバイス間のインタフェースでよく使われてます。上記正式名称を略してIICと呼ぶが「I」が2個重なるのでI2Cと表記するこおtもあり更に上付き文字の表示が難しいので簡易的にI2Cと表記されることが多い。尚読み方はそれぞれ、
- IIC:(アイ・アイ・シー)
- I2C:(アイ・スクエアド・シー)
- I2C:(アイ・ツー・シー)
Arduinoの世界ではよく出てくる言葉なので覚えておくと役に立ちます。
例えば、デジタル温度センサーとか3軸加速度センサーなど。
Arduinoとの接続
接続は4本だけと非常に簡単です。
LCD側 | Arduino側 |
+5V | +5V |
GND | GND |
SDA | A4(他のピンへの代替不可) |
SCL | A5(他のピンへの代替不可) |
参考に画像も掲載。
Arduinoスケッチ
ライブラリを使うことで面倒なI2C制御、LCD制御が非常に簡単になります。
必要ライブラリ
2個のライブラリが新規に必要になります。
Wireライブラリ:
I2Cインタフェース制御ライブラリでしてArudino標準ライブラリです。
LiquidCrystal_I2Cライブラリ:
今回使用するI2C接続のLCDモジュールを制御(文字表示、カーソル制御、バックライト制御など)するためのライブラリ。
LCD表示制御方法
表示の基本は以下の手順になります。
①LCD初期化
lcd.begin(16,2);
lcd.home();
lcd.clear();
lcd.setBacklight(255) (数値は任意、255=最大明度、0=最少明度)
の4個の関数をコールする。(一回のみ)
②lcd.setCursor()関数でカーソル位置を指定
具体的にはlcd.setCursor(5,0);という様にカーソル位置を文字位置番号、行番号の2つの数値で指定する、上の例だと1行目の6文字目となる
③lcd.print()関数で表示文字列を指定
表示したい文字列を引数で指定、例えば
lcd.print(“Hello World”);の様に。
この場合1行目の6文字目から”Hello World”と表示される。
サンプルスケッチ
サンプルプログラムを以下に示します。
#include <Wire.h> #include <LiquidCrystal_PCF8574.h> LiquidCrystal_PCF8574 lcd(0x3f); // set the LCD address to 0x3f void setup() { Wire.begin(); Wire.beginTransmission(0x3f); lcd.begin(16, 2); // initialize the lcd lcd.home(); lcd.clear(); lcd.setBacklight(255); } void loop() { lcd.setBacklight(255); lcd.setCursor(0, 0); lcd.print("Hello, world!"); lcd.setCursor(0, 1); lcd.print("Arduino!"); lcd.blink(); delay(5000); lcd.setBacklight(0); delay(1000); }