ESP32とLCDディスプレイモジュール(キャラクタ液晶ディスプレイ)を使って、文字を表示してみたいと思います。
LCDディスプレイモジュールの準備
Amazonで格安で買える「LCDディスプレイモジュール」とI2C通信が行える「シリアルインターフェースボード」を購入しました。
- 1602 LCD ディスプレイモジュール DC 5V 16×2キャラクタ
- 1602 LCD ブラック IIC/I2C/TWI/SPI シリアル インタフェース ボード
中国から郵便で送られてきていて、忘れた頃にポストに投函されていました。購入してから届くまでに大体2週間程度ぐらいかかりました。
LCDディスプレイモジュールとシリアルボードを接続して使用します。
直接半田付けしてしまっても良いかと思ったのですが、貧乏性なのでピンソケットを使用しました。
ESP32とLCDディスプレイモジュールを接続
ESP32とLCDディプレイモジュールを接続します。
シリアルボードのGND、VCC、SDA、SCLの4つをESP32に接続します。
GNDと5Vは、ESP32のGNDと5Vのピンに接続します。
SDAはESPの21ピン、SCLは22ピンに接続して下さい。
次に、I2C通信で使用するLCDディスプレイモジュールのアドレスを調べます。
アドレスは、Arduinoホームページにある「i2c_scanner」というプログラムを使用します。下記のサイトにアクセスして、ページ中間ぐらいにあるプログラムをArduino IDEに貼り付けて実行します。
Arduino Playground – I2cScanner
Arduiono IDEのシリアルモニタでESP32からの応答を確認して下さい。プログラムの通信速度は「9600bps」になっているので注意して下さい。
取得したアドレスはプログラム作成時に使用するので、控えておいてください。
文字列表示 プログラム作成
LCDディプレイモジュールに文字列を表示するプログラムの作成を行います。
まずは、LCDディプレイモジュールを使用するためのライブラリをインストールします。
Arduino IDEを起動して、メニューの「ツール」→「ライブラリを管理」を選択します。
表示した「ライブラリマネージャ」のテキストボックスに「LiquidCrystal I2C」を入力します。
「LiquidCrystal I2c by Frank de Brabander」が表示されるので、「インストール」ボタンを押してインストールします。
インストールが完了したらプログラムを書いていきます。
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const unsigned int ADDRESS = 0x27;
const int CHARS_NUM = 16;
const int LINES_NUM = 2;
LiquidCrystal_I2C lcd(ADDRESS, CHARS_NUM, LINES_NUM);
void setup() {
lcd.init();
lcd.backlight();
}
void loop() {
lcd.setCursor(0, 0);
lcd.print("Hello World!");
lcd.setCursor(0, 1);
lcd.print("DISP TEST");
delay(100);
}
プログラムについて簡単に説明いたします。
1行目で、I2C通信を使用するためのライブラリのヘッダを読み込みます。
2行目で、LCDディスプレイモジュールを使用するためのライブラリのヘッダを読み込みます。
4行目で、「i2c_snanner」で取得したLCDディスプレイモジュールのアドレスを設定しています。
5行目で、LCDディスプレイモジュールの1行で表示できる文字数を設定しています。
6行目で、LCDディスプレイモジュールで表示できる行数を設定しています。
8行目で、「LiquidCrystal_I2C」クラスを使用するための変数を設定しています。4,5,6行目で設定した値を引数に入れて初期化しています。
11行目で、LCDディスプレイモジュールの初期化、12行目で、バックライトをONにしています。
16行目で、ディスプレイの1行目の先頭にカーソルを移動させ、17行目で、「Hellow World!」の文字列を設定しています。
19行目で、ディスプレイの2行目の先頭にカーソルを移動させ、20行目で、「DISP TEST」の文字列を設定しています。
ESP32とパソコンをUSBケーブルで接続して、「マイコンボードに書き込み」を行ってください。
1行目に「Hellow World!」、2行目に「DISP TEST」が表示されます。
文字が表示されない場合は、LCDディスプレイモジュールに接続したシリアルボードについている「可変抵抗」をドライバで調整します。これで、ディスプレイの明るさの調整が行えます。
「LiquidCrystal I2C」ライブラリのおかげで簡単に文字列が出力できました。
【参考図書】