Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

超小型ボードM5Atom Liteをつかう その1:環境構築とLチカ

新しいプロジェクトで兎に角小さく、ただ出来れば無線接続したいという愉快な要望がありました。
ESP32を使ったArduino互換機ならイケそうだと探したところ……なんやら世間をにぎやかすM5Stack兄弟の内、M5Atom Liteという恐ろしく小さいボードが。

実際のところ

実機

比較用のRasPi4と比べても、その小ささは一目瞭然。
f:id:shuzo_kino:20201110232834j:plain
高さも殆ど消しゴムくらいのもの。
f:id:shuzo_kino:20201110232850j:plain

これでいて、240MHz dual coreに4Mbyteのフラッシュ領域とか……すごい時代になったもんです。

Arduino

M5Atomは超絶小型なこともあって、ボードリファレンスが新規に増えるわけではないです。

「ツール」=>「ボード」=> 「ESP32 Pico Kit」を選択。
これは、ESP32のサブシリーズである「ESP32-PICO」をつかってるからです。
f:id:shuzo_kino:20201110221628p:plain

ただ、ビルドするために追加ライブラリが必要です。
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();
}