LESSON 007
Arduino でマイコン内蔵LED(WS2812B)を実行させる。
マイコン内蔵LED(フルカラーシリアル ・ LEDテープライト)のWS2812Bを点灯します。
黒 | 赤 | 緑 | 青 | 白 | |
10進数 | 0,0,0 | 255,0,0 | 0,255,0 | 0,0,255 | 255,255,255 |
16進数 | 000000 | FF0000 | 00FF00 | 0000FF | FFFFFF |
色名 | Black | Red | Lime | Blue | White |
○ WS2812Bを並列に接続され、マイコンボード側から0番の順でLEDをコントロール出来ます。
#include <FastLED.h>
const int NUM_LEDS =10;
const int DATA_PIN =11;
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
}
void loop() {
// ①
leds[0] = CRGB( 255, 255, 150);
// ②
leds[1].setRGB( 0,255, 0);
// ③
leds[2].red = 0;
leds[2].green = 0;
leds[2].blue = 255;
// ④
leds[3] = leds[0];
// ⑤
leds[4] = 0xFF007F;
// ⑥
leds[5] = CRGB::Red;
FastLED.show();
delay(2000);
// ⑦
FastLED.clear();
FastLED.show();
delay(200);
}
スケッチ の 解説
- 設定
#include <FastLED.h>
マイコン内蔵LEDを制御をするためのライブラリです。マイコン内蔵LEDを動かすための命令(関数)集を呼び出し、Arduino IDEに登録する必要があります。
※ 追加ライブラリ
ライブラリには3種類あります。
・標準ライブラリ
Arduino IDEに標準で入っているもの
・追加ライブラリ
Arduino IDEにあるが追加して使用する
・外部ライブラリ
ZIP形式のライブラリをインクルードして使用する
自作ライブラリも含みます
※ モータやセンサーを使用する場合、必要に応じてライブラリを組み込む必要があります。
※ Arduino IDE に FastLED.h が インクルードされてなければ上記のスケッチを実行すると
が表示されます。
Arduino IDE の スケッチ > ライブラリをインクルード をクリック
FastLED を 探して インストール
ライブラリをインクルード の 項目に FastLED が表示されます。
CRGB leds[NUM_LEDS];
NUM_LEDS は LEDをコントロール数
leds[NUM_LEDS] はLED の変数宣言
- void loop() 内
FastLED 初期化処理
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
LED の 色の指定① 10進数で指示 赤 緑 青 を 0 ~ 255 で指示。
leds[0] = CRGB( 255, 255, 150);
② 10進数で指示 赤 緑 青 を 0 ~ 255 で指示。
leds[1].setRGB( 0,255, 0);③ 10進数で指示 RGBを個々で管理
leds[2].red = 0;
leds[2].green = 0;
leds[2].blue = 255;
④ コピー
leds[3] = leds[0];
⑤ 16進数で指示 赤 緑 青 を 00 ~ FF で指示。
leds[4] = 0xFF007F;⑥ 色名で指示
leds[5] = CRGB::Red;
FastLED.show();
LEDの実行
FastLED.clear();
全てのLEDの色データをクリアにする。
- 結果
リンク
LEDの移動
#include <FastLED.h>
int i,j,LED;
int m=3;
int n=m-1;
const int NUM_LEDS =12+3;
const int DATA_PIN =11;
CRGB leds[NUM_LEDS];
void setup() {
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
}
void loop() {
LED = NUM_LEDS + 6;
for(i=0;i<LED;i++){
for(j=0;j<n;j++){
leds[i+j] = CRGB( 0,0,255);
FastLED.show();
delay(30);
}
for(j=0;j<n;j++){
leds[i-m+j] = CRGB( 255, 0, 0);
FastLED.show();
delay(30);
}
}
}
〇 マイコン内蔵LED は 専用のコントローラもありますが、マイコンボードでも制御出来ます。
○ マイコン内蔵LED は 一つ一つのLED に対してコントロールが出来ます。