みかづきブログ・カスタム

基本的にはちょちょいのほいです。

M5Stack Core2 v1.1を使ってNeoPixelを光らせる ✨

前回に引き続き、M5Stack Core2を使ってチャーハンを輝かせるべく、プログラムを書いていきます。

https://cdn-ak.f.st-hatena.com/images/fotolife/k/kimizuka/20230622/20230622114903.gif

blog.kimizuka.org

今回は、LEDの制御部分を作ります。

LEDは制御が簡単なNeoPixelを、さらに配線がスッキリするので、M5StackとGROVEで接続できるものを選定しました。

M5Stack用NeoPixel互換 LEDテープ 50 cm[A035-C]www.switch-science.com

50cmのテープに72個のフルカラーLEDが付いています。
加速度センサとの結合は後回しで良いので、まずは36個ずつ2つのグループに分けて交互に光らせてみようと思います。

Adafruit_NeoPixel というNeoPixel制御用のライブラリがあるのでこちらを使ってサクッと実装します。

github.com

ソースコード

#include <M5Core2.h>
#include <Adafruit_NeoPixel.h>

#define LEDPIN 32
#define PIXELS_LENGTH 72
#define DELAY 100

Adafruit_NeoPixel pixels(PIXELS_LENGTH, LEDPIN, NEO_GRB + NEO_KHZ800);

int shiftIndex = 0;

void setup() {
  pixels.begin();
  M5.begin();
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextColor(WHITE, BLACK);
  M5.Lcd.setTextSize(16);
}

void loop() {
  pixels.clear();
  M5.update();

  for (int i = 0; i < PIXELS_LENGTH / 2; i++) { 
    int index = i * 2 + shiftIndex;

    pixels.setPixelColor(index, pixels.Color(255, 255, 255));
    pixels.show();
    M5.Lcd.setCursor(0, 0);
    M5.Lcd.printf("%d", index);
  }

  if (shiftIndex == 0) {
    shiftIndex = 1;
  } else {
    shiftIndex = 0;
  }

  delay(DELAY);
}

DEMO


リポジトリ

github.com