NeoPixel LEDとarduinoを使ってLEDをキラキラさせるクリスマス用のライトを作ってみようと思います。
といっても、ネタはすでにここ (Holiday Lights Hookup Guide) にアップされているので、真似るだけなんですが。
材料
- NeoPixel LED (個数は自由)
- Arduino 互換ボード
- 半田ごてとハンダ
- 5V電源もしくはボードが対応していればリチウムイオンポリマー電池
手順
- NeoPixel LEDの3つの端子とArduino互換ボードの3つの端子を接続。接続方法はハンダ付け、もしくはコネクターによる接続。
- NeoPixel (GND) = Arduino (GND)
- NeoPixel (DIN) = Arduino (任意の番号)
- NeoPixel (5V) = Arduino (5V)
- コードのアップ
- Holiday Lights Hookup Guide から好きなのを選択
- Arduino IDEにてコードを展開
- Arduino側の接続端子に応じてコードの以下の部分を修正
-
#define PIN 2
-
- NeoPixel LEDの数に応じてコードの以下の部分 [Adafruit_NeoPixel()の一つ目の引数] を修正
-
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
-
- 明るさを調整する場合にはコードの以下の部分を修正
-
strip.setBrightness(16);
-
- データのアップ
参考までですが、Arduino Gemmaだと、LEDの数が111個までしか処理できませんでした。
個人的には Candy Chase をベースに、オリジナルの赤と白だけでなく、緑も加えた3色に変更し、明るさを抑えて気持ちばかり省電力にしてみました。
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif#define PIN 2
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
void setup() {
strip.begin();
strip.setBrightness(16);
strip.show(); // Initialize all pixels to ‘off’
}void loop() {
triColor(100);
}
void triColor(uint8_t wait) {
for (int q=0; q < 3; q++) {
for (uint16_t i=0; i < strip.numPixels(); i++) {
strip.setPixelColor(i, 255,255,255); //turn every pixel white
}
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 255,0,0); //turn every second pixel red
}
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q+1, 0,255,0); //turn every third pixel green
}
strip.show();delay(wait);
for (uint16_t i=0; i < strip.numPixels(); i=i+3) {
strip.setPixelColor(i+q, 0); //turn every third pixel off
}}
}
参考