またまた、久々の Arduino ねた
もう時代遅れかもしれませんが、マイコン内蔵のカラー発光LEDである WS2812 のプログラミンをして遊びました。
こういうことは、時間が経つと・・・すっかり忘れてしまいますねぇ・・・(歳だから!)
今回使用したのは、WS2812が、24個円形に配置されているものです。
光を点滅させて回すと・・・まさに電子ルーレットですね。
とりあえず、忘備録的にスケッチを掲載しておきます。
#include <Adafruit_NeoPixel.h>
#define LEDNUM 24
Adafruit_NeoPixel TestLED = Adafruit_NeoPixel(LEDNUM, 3, NEO_GRB + NEO_KHZ800);
void AllOff() {
int i;
for(i=0;i<24;i++)
TestLED.setPixelColor(i, TestLED.Color(0,0,0));
TestLED.show();
}
void FlowOn(int Lr,int Lg,int Lb,int Lw) {
int i;
for(i=0;i<LEDNUM;i++) {
TestLED.setPixelColor(i,TestLED.Color(Lr,Lg,Lb));
TestLED.show();
delay(Lw);
}
}
void FlowOff(int Lw) {
int i;
for(i=0;i<LEDNUM;i++) {
TestLED.setPixelColor(i,TestLED.Color(0,0,0));
TestLED.show();
delay(Lw);
}
}
void setup() {
TestLED.begin();
AllOff();
}
void loop() {
int i;
for(i=0;i<10;i++) {
FlowOn(10-i,i,0,42);
FlowOff(42);
}
for(i=0;i<10;i++) {
FlowOn(0,10-i,i,42);
FlowOff(42);
}
for(i=0;i<10;i++) {
FlowOn(i,0,10-i,42);
FlowOff(42);
}
}
まず最初に、以下のヘッダーファイルを読み込みます。
#include <Adafruit_NeoPixel.h>
何連のLEDモジュールを使用するのか宣言をします。(今回は24連なので、LEDNUM=24)
Adafruit_NeoPixel TestLED = Adafruit_NeoPixel(LEDNUM, 3, NEO_GRB + NEO_KHZ800);
LEDの色の指定はこれ
TestLED.setPixelColor(i, TestLED.Color(Lr,Lg,Lb));
i番目のLEDの色を Lr,Lg,Lb で指定します。(Lrなどは、いつも眩しすぎるので10くらいにしています。)
これで色を指定したからと言って、光るわけではありません。
TestLED.show();
これで、指定した色のとおりに発光します。
LEDを消灯するには、Lr,Lg,Lbをすべて0にしてから、TestLED.show();を実行します。
やっぱり、簡単なプログラムでも、自分が作ったプログラムが動作すると楽しいです。