HiLetGo の OLED を ESP32 (ESP-WROOM-32) で使おうと思ったときに、予期していた状態と異なったのでここにメモとして残しておきます。
(購入したものは “HiLetgo® 1.3″ SPI 128×64 OLED LCD ディスプレイ 1.3インチ 液晶ディスプレイモジュール AVR PIC STM32 Arduinoに対応 並行輸入品” というものでした。最近だと同じ商品はもう見つからないようですね)
ESP-WROOM-32 で Arduino フレームワークを使ってこのディスプレイを使おうとしたときに、以前の u8glib が使えなかったので別のライブラリを探すことにしました。 u8glib で GraphicsTest をコンパイルさせたところ、なぜかフラッシュの領域を超えるくらいの大きなものが出来てしまったようで。
配線情報
ESP-WROOM-32 と OLED については次のようの結線をしました。ESP 側は柔軟にピンアサインを変更できるようなので、試してはいないですが、他の組み合わせでも動作するかもしれません。
OLED | ESP32 |
CLK | IO14 |
MOSI | IO13 |
RES | IO17 |
DC | IO16 |
CS | IO15 |
使用するライブラリ
今回使用したのは U8g2 というライブラリで、バージョンは 2.24.3 を使いました。動作の確認には、 GraphicsTest を用いました。
このサンプルで、有効にするデバイス行は U8G2_SSD1309_128X64_NONAME2_F_4W_SW_SPI と書かれた行です。ここを、先ほどの結線に従ってピンを設定します。
U8G2_SSD1309_128X64_NONAME2_F_4W_SW_SPI u8g2( U8G2_R0, /* clock=*/ 14, /* data=*/ 13, /* cs=*/ 15, /* dc=*/ 16, /* reset=*/ 17);
以前の結論にあった、 SH1106 の部分を有効に…と思ったのですが、このピン設定を出来るコンストラクタが無く、模索していたところ今回の設定を見つけるに至りました。
SH1106 ⇒ SSD1306 でも動く?というところにやや不安が残りますが、趣味でいじっている程度なのでこのまま遊んでみようと思います。