青ポスの部屋

旅と技術とポエムのブログ

ATOM Matrix (2) Lチカ

githubリポジトリ

githubにまとめました。ご自由にどうぞ。 github.com

イントロ

前回はほぼコーディングなしで触っただけなので、もっと突っ込んで触ってみます。マイコンの世界で最初に書くコードと言えば、Lチカです。ATOM MatrixはLEDを25個も積んでいるので簡単にできそうです。

ドキュメント

ほとんどありません。あるのはgithubのソースのみ。

github.com

環境構築

Arduino IDE

言わずもがな。

加えて、下記を入れます。

  • ボードマネージャ:ESP32
  • ライブラリ:M5Atom, fastLED

VSCodeArduinoエクステンション(オプション)

自分はVSCodeを常用しているので、Arduinoエクステンションを入れます。

コンパイル

Upload speedを115200に下げます。そうしないとアップロードに失敗します。

qiita.com

LEDの光らせ方

LEDを光らせるインターフェースは2つあります。M5.dis.displaybuffM5.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を使うほうがよいです。