中野島ロボット

小さなロボットの自作記事を書いています。

6日でできる! 二足歩行ロボット自作 SW Day1:LEDの色を変えます

はじめに

フルカラー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で使えるはずです。

フルカラーシリアルLEDテープ(17cm)
スイッチサイエンス

amazon.co.jpで買う
Amazonアソシエイト by フルカラーシリアルLEDテープ(17cm) の詳しい情報を見る / ウェブリブログ商品ポータル