👻
小さなESP32C3と小さな0.91インチOLED
Lチカの次に多いのではないかと思えるぐらい使われているSSD1306が使われているOLEDに文字表示を試してみた時の備忘録
ESP32はRISC-Vが搭載されているSeeed Studio ESP32C3と0.91 インチ 128x32ドット I2C通信 OLED SSD1306の組合せで制御はMicroPythonです。
接続
- OLED(SCK) ←→ ESP32C3(SCL)
- OLED(SDA) ←→ ESP32C3(SDA)
SSD1306ドライバ
SSD1306のドライバは下記のものを使用させていただきました。
サンプル表示
サイトの記載のサンプルをベースHello Worldの表示をさせてみました。
import machine
i2c = machine.I2C(sda=machine.Pin(6), scl=machine.Pin(7))
from ssd1306 import SSD1306_I2C
oled = SSD1306_I2C(128, 32, i2c)
oled.text('Hello', 0, 0)
oled.text('World', 0, 10)
oled.show()
sdaとsclのピン番号は下記のwikiに記載のあるピンレイアウト参考にしています。
実行してみると警告メッセージが表示
Warning: I2C(-1, ...) is deprecated, use SoftI2C(...) instead
machine.I2Cの引数IDを指定してないデフォルト値(-1)では警告がでるもよう、メッセージ的には非推奨でソフトウェアI2Cを推奨しているようです。
MicroPythonのドキュメントにはハードウェアI2CとソフトウェアI2Cの違いが記載されていました。
引数のIDを明示的に指定することでも警告表示は消せるようでESP32C3の場合は0を指定することで消えました。
text以外のメソッド
サンプルではtext()メソッドでテキスト文字を表示させましたが利用について紹介されている記事を読んでいると罫線や四角を表示させることも出来るようなのでssd1306.pyを確認してみるとそれらしいメソッドの定義がない、定義してあるSSD1306クラスを見るとframebuf.FrameBufferクラスを継承しているようでframebuf.FrameBufferクラスのドキュメント確認すると描画するためのメソッドの説明がありました。
簡単だと思っていたOLED表示、実際試してみるのは大事かも。
Discussion