もよいめも

不定期更新ものづくりブログ

流れるLED(WS2812B)をArduinoで制御してみた

流れるテープLEDって知ってますか?
名前の通り、LEDが流れるように順番に点灯していくテープLEDです。

どんな仕組みになっているのか気になっていたんですが、どうやら
LED1つ1つにICが入っていてそれが数珠つなぎになっているようです。

という事で今回はそんなIC「WS2812B」が搭載されたLEDのリングをポチったので紹介します。

買ったLED

今回はAmazonですぐに届くこちらの商品↓を購入しました。

ちょっと高いですがRGBLEDなのでしょうがないですかね。

準備

まずははんだ付けして線をはやします。
基板の後ろの「IN、VCC、GND」から3本の線をはやします。
たくさんのLEDが信号線一本で制御でできてしまうので楽ですね~

テープ状の場合も方向があるので気をつけください。
f:id:moyoi:20190914081125j:plain

配線

GND-GND
VCC-VIN
IN-D6

光らせる

まずはライブラリを入れます。
以下のようにライブラリの管理ウィンドウを開きます。
f:id:moyoi:20190517082726p:plain
開けたら他のライブラリの更新が行われるので少し待ってから検索欄に「NeoPixel」と入れます
そして多分上から3番目の「Adafruit_NeoPixel」を左下のインストールボタンを押してインストールします。
f:id:moyoi:20190517082855p:plain
そしたらIDEを再起動して完了です。

プログラム

このライブラリーにはいろいろな関数がありなかなか面倒なので、
今回は基本だけ紹介させていただきます。
(ライブラリーのサンプルプログラムから色々な光り方を試せます。)

#include <Adafruit_NeoPixel.h>

#define PIN 6 //LEDの信号線をつなぐマイコンのピン番号
#define STRIP_COUNT 12 //つなぐLEDの数

Adafruit_NeoPixel strip = Adafruit_NeoPixel(STRIP_COUNT, PIN, NEO_GRB + NEO_KHZ800); //あれこれ初期設定

void setup() {
  strip.begin();
}

void loop() {
  for (int i = 0; i <= STRIP_COUNT; i++) {
    strip.setPixelColor(i, strip.Color(0, 0, 255)); //先ほど初期設定した名前.setPixelColor(設定するLEDの番号, strip.Color(緑の強さ, 赤の強さ, 青の強さ)); ちなみにこの場合は青を最大の明るさで点灯
    strip.show(); //LEDの設定を反映
    delay(30);
    strip.setPixelColor(i, strip.Color(0, 0, 0)); //青を消灯
  }
}

といった感じで、初期設定をして設定するLEDの番号を指定して光らせる色を設定して反映させるだけです。簡単ですね。

まあ、この記事は急いで書いたのでもしかすると色々追加していくかもしれません。

それでは良きArduinoライフを~