はじめに
M5Stamp C3U MateにLCDを接続して、フェリス*1を表示させました。
サンプルコード
ST7735のクレートがあるため、利用します。さらにサンプルコードもあるため、以下をクローンして利用します。
github.com
初期値の修正
サンプルコードをそのまま利用すると、表示範囲と色に誤りがありました。そのため、以下の修正をしています。本件は、issueで連絡しています。
--- a/esp32c3-examples/examples/draw_ferris.rs +++ b/esp32c3-examples/examples/draw_ferris.rs @@ -35,10 +35,10 @@ fn main() -> Result<()> { let rst = PinDriver::output(peripherals.pins.gpio3)? ; let dc = PinDriver::output(peripherals.pins.gpio4)? ; - let rgb = false; + let rgb = true; let inverted = false; let width = 128; - let height = 128; + let height = 160;
ビルドコマンド
以下でビルドおよびFWの書き込みを行います。
git clone https://github.com/sajattack/st7735-lcd-examples.git cd st7735-lcd-examples/esp32c3-examples cargo espflash flash --example draw_ferris
配線
GithubのREADME.mdに記載の通りに配線します。ただし、LEDは3.3Vに配線する必要があります。そうしないとLCDが点灯しません。このLED配線はLCDのバックライトへの給電のようです。動作確認用のLEDというわけではありません。
ST7735R Pin | M5Stamp C3U Pin |
---|---|
LED | 3V3 |
SCL/SCK | gpio8 |
SDA/MOSI/SI | gpio10 |
DC/A0 | gpio4 |
RES/RST | gpio3 |
TCS/CS | GND |
GND | GND |
VCC/3V3 | 3V3 |
動作確認
色がちゃんとなった!
— YU2TA7KA (@Yu2Ta7Ka) 2023年8月5日
デバイス初期化時のRGB設定引数が反転してたのが問題だった。 pic.twitter.com/1omqgzXJs3
いくらか手こずりましたが、無事に表示ができました。
おわりに
2023年5月にパソコンが故障して、新しいPCを急遽購入して、ようやくここまで戻ってこれました。もう少しLCDクレートをいじったら、マイク接続して音データ取得してFFTさせたいなと思っています。
気になっていること
上記のように期待動作はしているのですが、cargo espflash flash でFW書き込み時にしょっちゅうタイムアウトで書き込み失敗が発生します。数度試行すると成功するので、事なきを得ていますが、気になっています。。何かアドバイスお持ちの方いらっしゃたらコメント/ご連絡いただけると幸いです。
*1:フェリスはRustコミュニティの非公式マスコットです。