導入
電子工作を全然やったことがなかった頃に友人にもらった液晶ディスプレイがあったので、動作確認してみた記録です。
PlatformIOでLiquidCrystal_I2Cライブラリを使って関数を呼び出すだけなので、全然難しいことはしていません。
今回使ったマイコンは、M5Stack Basicで、PlatformIOでプログラムを作成しています。
使用したLCD
使用したのは、こちらの写真のもので、基盤を見たところ、QAPASS 1602Aと書いてありました。本体は16ピンですが、裏面にI2Cで制御できるアダプター(?)がついています。今回は、このI2Cアダプター経由で使用します。
画面には16×2文字の表示が可能です。
配線
4本の配線をジャンパワイヤでつなげているだけです。端子の対応は以下のようになります。
LCD | M5Stack |
---|---|
GND | G |
VCC | 5V |
SDA | 21 |
SCL | 22 |
M5Unified
記事の本題とはずれますが、今回、私は初めてM5Unifiedライブラリを使用しました。M5Stackシリーズには様々な製品があり、製品によって、使用するライブラリや関数が異なります。それらのM5Stackシリーズの異なるハードウェアに共通して使用できるように公開されているのがM5Unifiedです。個別のライブラリを使用するより、こちらを使用する方が便利そうですね。 (私が持っているM5Stackシリーズには対応していないものも多いのですが…) 詳細は以下のサイトをご覧ください。 docs.m5stack.com
実践
ライブラリを使用するために、platform.ini内に以下のように記述しておきます。
[env:m5stack-core-esp32] platform = espressif32 board = m5stack-core-esp32 framework = arduino lib_deps = M5Unified LiquidCrystal_I2C
本体のコードは以下です。
#include <M5Unified.h> #include <LiquidCrystal_I2C.h> //I2CアドレスとLCDの画面サイズを指定 LiquidCrystal_I2C lcd(0x27,16,2); void setup() { //M5Unifiedで本体初期化 auto cfg = M5.config(); cfg.serial_baudrate = 9600; M5.begin(cfg); //本体ディスプレイにHelloWorld!を表示 M5.Display.setTextSize(3); M5.Display.println("HelloWorld!"); //LCD初期化 lcd.init(); //呼び出すことでバックライトON lcd.backlight(); //左上からHello, world!を表示 lcd.setCursor(0, 0); lcd.print("Hello, world!"); } void loop(){ }
コードを書き込み、問題なく表示できました!