M5Stamp Pico Mate

2021年11月27日

M5Stamp Pico Mate

XBeeが使い勝手が難しいため色々挑戦中です。以前トワイライトDIP使用してそれなりに便利だったのですが、通常のwifiで制御するのも面白いかと思い、ESP-32 やESP-12などで遊んでます。組み込みを考えるとやはり小さな方が有利なので、最近発売されたM5Stamp Pico Mateを試してみました。これは小型のマイコン+wifiが内蔵されており上手く利用できればこれだけでほとんど解決する感じです。

M5Stamp Pico Mate

秋月電子と並ぶ電子部品好きが良く参考にするショップ スィッチサイエンスさんで販売されてます。税込み825円で送料200円ですので機能を考えればかなりお安いです。私はESPやM5系は触ったのはじめてなので結構戸惑いましたが、結局は今までの応用でほぼなんとかなりましたが、数点つまずきましたのでそれを中心に防備録です。

初期の設定等は、本家のページで回路図等をまず眺めて、MSR合同会社さんのM5Stamp Picoでできること 〜M5Stamp Picoの使い方、Lang-shipさんのM5Stack M5Stamp Picoを買ってみたなどを見ると大体使えます。

ただ、どこを見ても内蔵のLEDを上手くコントロールできません。本家のサンプルでも緑色で点灯するが色は変えられず、点滅など上手くコントロールできません。本家から配られている<FastLED>ライブラリーが上手く動作してないようです。初期のバージョンから変わっているのかもしれません。

本家のGUIプログラム環境の UIFlow を利用した場合はLEDを問題なくアクセスできてますので、ハードの問題ではなくライブラリーの問題でしょう。LEDがシリアル制御で動作する素子<SK6812>なのでよくあるLチカで動かないのはしょうが無いのですが、テストするだけで大きなライブラリー入れるのもどうなのかと思いますね。

Adafruit_NeoPixelを利用したところすんなり動作しましたので、今後このLEDでテストするときはこれで。

 

#include <Adafruit_NeoPixel.h>
#define PIN        27
#define NUMPIXELS 1
#define BUTTON_PIN   39
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500
#define BRIGHTNESS 20 // Set BRIGHTNESS to about 1/12 (max = 255)
void setup() {
  Serial.begin(115200);
  // pinMode(BUTTON_PIN, INPUT_PULLUP);
  pinMode(BUTTON_PIN, INPUT);
  pixels.begin();
  pixels.clear();
  pixels.setBrightness(BRIGHTNESS);
}

int r, g, b;

void loop() {

  for (b = 0; b < 256; b = b + 63) {
    for (g = 0; g < 256; g = g + 63) {
      for (r = 0; r < 256; r = r + 63) {
        int b_on = digitalRead(BUTTON_PIN);
        if (b_on == LOW) {
          pixels.clear();
          pixels.show();
          Serial.println("B on");
        }
        else {
          pixels.setPixelColor(0, pixels.Color(r, g, b));
          pixels.show();

          Serial.printf("%d,%d,%d\n", r, g, b);
          delay(DELAYVAL);

        }
      }
    }
  }
}

ボタンのテストも兼ねて、押している間は消灯。VTRでは手を離せないので消灯の場面はなし

電子工作

Posted by akiba