M5Stack社のマイコンデバイスのうち、ディスプレイが付いていない製品の多くには、代わりにRGB LEDが搭載されています(「ATOM LITE」や「M5Stamp Pico」など)。
リンク
リンク
リンク
マイコンデバイスに搭載されているLEDは、何らかの処理をしている間は点灯させるなど、利用機会が非常に多いパーツです。
ただ、シンプルなLEDならば、GPIOをHighやLowにするだけで点灯・消灯ができるのに対し、RGB LEDの場合は、あらかじめライブラリを読み込んだり初期設定をしたりと、事前の設定が結構面倒です。
例えば「M5Stamp Pico」でRGB LEDを点灯させる場合、私はこれまで「FastLED」ライブラリを使って以下のようなスケッチをつくっていました。
#include <FastLED.h>
#define NUM_LEDS 1
#define LED_PIN 27
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<SK6812, LED_PIN, GRB>(leds, NUM_LEDS);
}
void loop() {
leds[0] = CRGB::Green;
FastLED.show();
delay(500);
leds[0] = CRGB::Black;
FastLED.show();
delay(500);
}
もっと簡単な方法はないか?と常々思っていたのですが、最近になって偶然「neopixelWrite()」というコマンドを見つけました。外部のライブラリを読み込んだりすることなく、このコマンドを実行するだけでRGB LEDを点灯させることができるようです。
このコマンドを使って、先ほどと同様のスケッチを書くと以下のようになります。
void setup() {
}
void loop() {
neopixelWrite(27, 0, 255, 0);
delay(500);
neopixelWrite(27, 0, 0, 0);
delay(500);
}
格段にシンプルになりました。
「FastLED」ライブラリでは、複数のRGB LEDがつながった「LEDテープ」なども制御できるのに対し、このコマンドでは1灯のRGB LEDしか制御することができませんが、点灯色を変更することもでき、マイコン搭載のRGB LEDを制御するには十分です。
これまでは、RGB LEDの制御が面倒なばかりに、ついついディスプレイ付きのデバイスを使ってしまうこともあったぐらいですが、これなら今後、RGB LED付きデバイスを利用する機会も増えそうです。