新しいプロジェクトで兎に角小さく、ただ出来れば無線接続したいという愉快な要望がありました。
ESP32を使ったArduino互換機ならイケそうだと探したところ……なんやら世間をにぎやかすM5Stack兄弟の内、M5Atom Liteという恐ろしく小さいボードが。
実際のところ
実機
比較用のRasPi4と比べても、その小ささは一目瞭然。
高さも殆ど消しゴムくらいのもの。
これでいて、240MHz dual coreに4Mbyteのフラッシュ領域とか……すごい時代になったもんです。
Arduino側
M5Atomは超絶小型なこともあって、ボードリファレンスが新規に増えるわけではないです。
「ツール」=>「ボード」=> 「ESP32 Pico Kit」を選択。
これは、ESP32のサブシリーズである「ESP32-PICO」をつかってるからです。
ただ、ビルドするために追加ライブラリが必要です。
M5AtomとFastLEDをライブラリマネージャーから別途いれておいてください。
スケッチ
ボタンを押す毎にLEDの色がかわるサンプル
#include "M5Atom.h" extern const unsigned char AtomImageData[375 + 2]; uint8_t DisBuff[2 + 5 * 5 * 3]; void setBuff(uint8_t Rdata, uint8_t Gdata, uint8_t Bdata) { DisBuff[0] = 0x05; DisBuff[1] = 0x05; for (int i = 0; i < 25; i++) { DisBuff[2 + i * 3 + 0] = Rdata; DisBuff[2 + i * 3 + 1] = Gdata; DisBuff[2 + i * 3 + 2] = Bdata; } } void setup() { M5.begin(true, false, true); delay(10); setBuff(0xff, 0x00, 0x00); M5.dis.displaybuff(DisBuff); } uint8_t FSM = 0; void loop() { if (M5.Btn.wasPressed()) { switch (FSM) { case 0: setBuff(0x40, 0x00, 0x00); break; case 1: setBuff(0x00, 0x40, 0x00); break; case 2: setBuff(0x00, 0x00, 0x40); break; case 3: setBuff(0x20, 0x20, 0x20); break; default: break; } M5.dis.displaybuff(DisBuff); FSM++; if (FSM >= 4) { FSM = 0; } } delay(50); M5.update(); }