💡

M5Stamp pico LEDとボタンを動作確認する最低限のコード

2021/09/18に公開

コード

#include "M5Atom.h"

void setup() {
  M5.begin(true, false, true);
}

void loop() { 
  M5.update();  // ボタン状態更新
  // 0番目のLED、色指定はGRB
  M5.dis.drawpix(0, M5.Btn.isPressed() ? 0x00ff00 : 0x0000ff);
  delay(50);
}

これでLEDとボタンの動作確認ができるよ。やったね。
Atom Liteが甲羅脱いだみたいな奴だし、ヘッダもAtomで良いみたい。
M5.begin の3つ目のフラグはdisplayEnable で、こいつtrueに設定しないとダメっぽいですよ。

接続

DIY Kit を購入した場合、一番簡単な配線はそのままブッ挿すだけ。

でもボタンを押すときに外れそうで怖いし、このやり方だんだん穴がゆるくなるらしいので、せめてブレッドボードに挿しとくのがよいでしょう。LED、ボタンについてはESP32が生きていればよいので、DIY Kitからの給電だけで動きます。

Arduinoを含む詳細な環境セットアップは探せばいくらでも出て来るので全部略。セットアップはあるのにシンプルなコードが見つからなかったんだよなあ…

最低限のコード+1

#include "M5Atom.h"

uint32_t convert(CRGB color) {  // GRB
  return (color.g << 16) | (color.r << 8 ) | color.b;
}

void setup() {
  M5.begin(true, false, true);
}

uint8_t state = 0;

void loop() { 
  M5.update();  // ボタン状態更新
  CRGB color = 0;
  switch(state >> 2) {
    case 0:
      color = CRGB::Red;
      break;
    case 1:
      color = CRGB::Green;
      break;
    case 2:
      color = CRGB::Blue;
      break;
    default:;
      color = 0;
  }
  M5.dis.drawpix(0, convert(color));
  delay(50);
  if (!M5.Btn.isPressed()) {
    state = ++state & 0xf;
  }
}
  • GRBに変換する関数用意しとくとCRGBにある定義が使えるよ
  • ちゃんと R G B 3色確認したいよね…
  • LEDが点灯消灯したり勝手に色が変わったりしてこそLチカって感じ

LED光ったので勝利!って思ったらカラーフォーマットが変なのに最初気づかなかった罠がありまして…。ちゃんと全部点灯確認しないとダメでしたね。自戒。
Atom Lite のLEDを使うっぽい公式のサンプルコードを見ると、上のほうのコメントには GBR color ってあるのに、下方には M5.dis.drawpix(0, 0x00f000); //RED 红色 とあって、実際は後者が正解のようでした。

追記

9/19 に m5stack/STAMP-PICO 公式リポジトリが出来ていたので、exapmpleもじわじわと増えていくことでしょう。現在あるのはサンプルコードのみです。専用ライブラリがAtomと別に出来るのかどうかは知らない。

Discussion