M5 CapsuleでLチカ
前回のつづき
今までは、NeoPixel系のRGB LEDを光らせるときに、Adafruit NeoPixel Libraryというライブラリを用いていた
今回は、FastLEDというライブラリを使ってみる
GitHubの説明文を読むと、簡単で効率よく、様々なLEDのチップを制御するためのライブラリ、高いパフォーマンスの8bitの数学的な演算、とあるので効率を意識したライブラリのようで、筆者の好む系統だと感じる
M5CapsuleのRGB LEDのピン番号を探す
M5CapsuleのSchematicをみてもみつからないと思っていたが、
M5Capsuleは、Stamps3を組み込んだもので、Stamps3にRGB LEDが実装されている
Stamps3のSchematicには、WS2812が書かれていて、GPIO21と接続していると読み解けた
こういう機会に、Schematicを読んで慣れていきたい
よくみると
M5Capsuleの上部の印字をよく見ると、RGB STATUS - G21と書いてあった
RGBの下に書かれた「STATUS」と読むのには、ルーペを使っても、苦労した(本当にSTATUSなのかは定かではない)
余談だが、AIに文字認識させたら「ROB SFATUS」となった。
液晶などの出力装置がないので、ステータスを表示すると便利そう
赤がエラーなど
コードサンプル
赤、緑、青と1秒おきに光らせるサンプルを作る
任意の色を指定するときは、leds[0] = 0xFF44DD;とすればよさそうだ
#include <Arduino.h>
#include <FastLED.h>
#include "M5Unified.h"
#define NUM_LEDS 1
CRGB leds[NUM_LEDS];
void setup() {
auto cfg = M5.config();
M5.begin(cfg);
Serial.begin(115200);
FastLED.addLeds<NEOPIXEL, GPIO_NUM_21>(leds, NUM_LEDS);
leds[0] = 0xFF44DD;
FastLED.show();
}
void loop() {
leds[0] = CRGB::Red;
FastLED.show();
Serial.println("RED");
delay(1000);
leds[0] = CRGB::Green;
FastLED.show();
Serial.println("GREEN");
delay(1000);
leds[0] = CRGB::Blue;
FastLED.show();
Serial.println("BLUE");
delay(1000);
}
無事に動作した