はじめに
フルカラーLEDの色をコマンドで変えられるようにします。
HW編の おわりに にあるソースコードに順次機能を追加して行きます。
SW編はHWの終わりにで調整できているものとします。
Arduinoのスケッチは大きく分けると、定義、初期設定、メインループ の三つから構成されています。
HWの最後のソースコードの定義、初期設定、メインループにそれぞれソースコードを追加すると機能が追加されます。
では、早速ですがソースコードです。
定義
以下の定義を追加します。
// 定義
// FullColor LED
#include
// RGBLEDに出力するピン番号
#define RGBLED_OUTPIN 14
// Arduinoにぶら下がっているRGBLEDの個数
#define NUMRGBLED 1
// RGBLEDのライブラリを生成する(色指定はRGBの並びで行う、LEDの速度は800KHzとする)
Adafruit_NeoPixel RGBLED = Adafruit_NeoPixel(NUMRGBLED, RGBLED_OUTPIN, NEO_RGB + NEO_KHZ800);
初期設定
初期設定にLEDのライブラリの初期化コードを追加します。
LEDは電気をすごく使うので、少しだけ電気を流す設定にします。
// 初期設定
setup()
{
// Full Color LED
RGBLED.begin() ; // RGBLEDのライブラリを初期化する
RGBLED.setBrightness(255) ; // 明るさの指定(0-255)を行う
RGBLED.setPixelColor(0, 0, 10, 0) ; // 適度に明るい緑の色。(R=0,G=150,B=0)
RGBLED.show() ; // LEDにデータを送り出す
}
メインループ
メインループに Lコマンドを追加します。
// メインループ
void loop() {
// LED
if ( command == 'L' || command == 'l' ) // 'L' is LED Command "L,Red,Green,Blue"
{
Serial.print(command);
Serial.print(',');
int red = Serial.parseInt();
Serial.print(red);
Serial.print(',');
int green = Serial.parseInt();
Serial.print(green);
Serial.print(',');
int blue = Serial.parseInt();
Serial.print(blue);
Serial.print('\n');
RGBLED.setPixelColor(0, red, green, blue); // 色を設定する
RGBLED.show(); // LEDにデータを送信する
} // LED End
}
動作確認
LコマンドでLEDの色を変えます。
赤、緑、青、R,G,Bの順に色を設定して行きます。
設定した色に変われば成功です。
これで、一々ソースコードを変更しなくても、コマンドにより色が変えられるようになりました。
おわりに
このLEDと同じコントローラ(WS2811、WS2812B等)を積んだシリアルタイプのLEDは同じように設定可能です。
シリアルLEDは、制御に1ピンしか消費しないので、数珠つなぎで何個でも光らせられます。(電気は食いますが)
購入品情報(まだ購入していません)
使っているLEDは秋月電子で、一個40円のシリアルLEDですが、同じような仕様のシリアルLEDはこれが最安かと思います。
10個入りなので10体分ですので、少し割高で形も砲弾型ではないですが、同じライブラリで電源5Vで使えるはずです。