M5StickC に、Cozmo 風の顔を表示する ESP32_Faces というプログラムが公開されています。
luisllamasbinaburo / ESP32_Faces
https://github.com/luisllamasbinaburo/ESP32_Faces
これを、M5Atom + I2C 接続 SSD1306 128×64 OLED で動作するように改造してみました。
プログラムはこちらです。
shikarunochi / ESP32_Faces for M5Atom + SSD1306 128×64 OLED
https://github.com/shikarunochi/ESP32_Faces
元プログラムを fork して必要な個所のみ変更しています。
M5StickCで用いている TFT_eSprite と、今回変更した Adafruit_SSD1306 は、ほぼ同じ関数を実装してあるので、変更箇所は少なくて済んでます。TFT_CYAN を WHITE に変えてるのと、「_buffer.pushSprite(0, 0);」を「 _buffer.display();」 に変えてるところがポイントですね。
M5Atom Lite + I2C接続128×64 OLED で ESP32_Faces 表示。(動かすにはESP32_Faces プログラムに少し修正必が要です。)
I2Cなのでちょっと画面更新が遅めですが、実物で見るとそんなに気にならないです。かわいいー。 pic.twitter.com/TNyF4dZMnM— Nochi (@shikarunochi) October 31, 2020
I2C接続なので描画速度が心配でしたが、白黒で描画エリアも小さいので、いい感じで動作しましたー。
本体ピンの並びがちょうど M5Atom 本体の並びにピッタリなので、直接差し込んで動作するのが良いですね!Atom Lite はGROVE 含めて、ピンの使用方法が結構自由に決められるので良いです。
Atom Matrix でも動作しました!Atom Matrix の場合、内部 I2C を使う時は、使用Wire/GPIO がぶつからないように気を付けてくださいー。特に、内部の6軸ジャイロを使っている場合、 G25 / G21 の SCL / SDA ピン配置が逆になってしまうので OLEDを直接差し込む方式では動作しないと思いますー。
ちなみに上の接続は、以前に作ったアダプタを使って、Atom Matrix の画面と OLED の画面が同じ方向になるようにしてます。
M5Atom:液晶接続アダプタ
https://shikarunochi.matrix.jp/?p=3929
接続は GND / 3.3V / SCL:G33 / SDA:G23 です。