githubリポジトリ
githubにまとめました。ご自由にどうぞ。 github.com
イントロ
前回はほぼコーディングなしで触っただけなので、もっと突っ込んで触ってみます。マイコンの世界で最初に書くコードと言えば、Lチカです。ATOM MatrixはLEDを25個も積んでいるので簡単にできそうです。
ドキュメント
ほとんどありません。あるのはgithubのソースのみ。
環境構築
Arduino IDE
言わずもがな。
加えて、下記を入れます。
- ボードマネージャ:ESP32
- ライブラリ:M5Atom, fastLED
VSCodeのArduinoエクステンション(オプション)
自分はVSCodeを常用しているので、Arduinoエクステンションを入れます。
コンパイル
Upload speedを115200に下げます。そうしないとアップロードに失敗します。
LEDの光らせ方
LEDを光らせるインターフェースは2つあります。M5.dis.displaybuff
とM5.dis.drawpix
です。
M5.dis.displaybuff
LEDの輝度は1次元の配列で与える必要があります。具体的には、次のようなuint8_t配列になります。
| x方向LED数 | y方向LED数 | (0,0)のR | (0,0)のG | (0,0)のB | (0,1)のR | ... | (5,5)のB |
第0成分と第1成分はバッファのx方向、y方向のサイズで、サンプルでは0x05とLEDの行数、列数が格納されています。
M5.dis.drawpix
1ピクセルずつ指定して光らせます。引数を(x_pos,y_pos)のように与えることもできるし、0~25で与えることもできます。こちらのほうが使い勝手がいいですが、全面を一気に光らせたところ明らかにまずそうな光り方をしたので、パッとパターンを表示したりする場合はdisplaybuffを使うほうがよいです。
Lチカ
普通に全面をチカチカさせてもいいのですが、ちょっと遊んでみました。
#include "M5Atom.h" void setup() { // void M5Atom::begin(bool SerialEnable , bool I2CEnable , bool DisplayEnable ) M5.begin(true, false, true); } void loop() { for (uint32_t i = 0; i < 25;i++){ M5.dis.drawpix(i, 0xf00000); delay(50); } for (uint32_t i = 0; i < 25; i++) { M5.dis.drawpix(i, 0x000000); delay(50); } }
全面をチカチカさせるときは「ここのdelayをコメントアウト」したりすると、先に述べた通り明らかにまずそうな光り方をするので、displaybuffを使うほうがよいです。