OLED LCDディスプレイを買ったので、手元にあるESP32で簡単に動作確認してみたいと思います。意外と最近の記事が少なかったので備忘録もかねて書きます。
ついでにLCDディスプレイとI2C通信についても軽くふれていきます。
使ってみたLCDディスプレイについて
Amazonで売っていたHiLetgoのOLEDLCD(SSD1306)です。
約900円でした。I2C通信仕様の物を選んでみました。
Macのキーボードに載せてみました。思ったよりかなり小さい・・・
ピンはGND,VCC,SCL,SDA
の4本です。
I2C通信とは?
接続する前にI2C通信について簡単に説明します。I2C通信とはシリアル通信の1種です。
厳密にいうとシリアル通信の同期方式の一つになります。電源線の他に2本の線を接続する必要があります。
SDA : データ線 データを転送する。
SCL : クロック信号線 送信側と受信側の同期を行う。
参考になる記事
電子工作初心者のために シリアル通信方式を分かりやすくまとめてみた
ESP32との接続方法(Devkitcの場合)
ESP32のどこにさせばいいの?ということでまず、お手元のESP32の入出力ダイアグラムをみてみましょう。VCCは3.3vに繋いでください。
下記図をみると
GPIO21:SDA データ線
GPIO22:SCL クロック線
に該当することがわかります。
ライブラリ
SSD1306 ESP32 と検索して出てくるライブラリをインストールしてください。
コード
注意する箇所はI2Cアドレスです。SSD1306本体の裏側を見て、抵抗がどこに繋がっているか確認して下さい。
//OLED LCD サンプル
//SDA データ線 GPIO 21
//SCL クロック線GPIO 22
# include <Wire.h>
# include "SSD1306.h"//ディスプレイ用ライブラリを読み込み
//本体裏側 0x78に接続→0x3C 0x7A→0x3A
SSD1306 display(0x3c, 21, 22); //SSD1306インスタンスの作成(I2Cアドレス,SDA,SCL)
void setup() {
display.init(); //ディスプレイを初期化
display.setFont(ArialMT_Plain_16); //フォントを設定
display.drawString(0, 0, "Hello SSD1306!!"); //(0,0)の位置にHello Worldを表示
display.display(); //指定された情報を描画
}
void loop() {
}
結果(イメージ)
※SSD1366となっていますが、ミスです※
終わりに
思ったより簡単にできました。ディスプレイがあるとセンサの値や、状態を確認するのが簡単になりそうですね。しかも安いし、コンパクトで尚且つ綺麗でした。
複数使う場合はアドレスを割当なければならないので、またいろいろ調査してみてください!!