そろそろ年末に差し掛かってきましたので、季節ものの工作が捗りますね。
クリスマスのイベントに向けて、NeoPixelが活躍します。
とりあえずこんなものを作りました。
スイッチを切り替えることで、イルミネーションの種類を変えられるようにしました。
NeoPixelは3m(90個分!)あるので、これを何かに飾り付ければOKです!
Arduinoから電源を取っている状態で、90個ちゃんと光ったのも結構感動ポイントでした。
今回はケースの設計がいい感じにできました!
コンパクトにしすぎると、ケース内の配線が大変だというのも改めて感じつつ…。
今気づいけど、パスコンを入れる前の写真でしたね。。
そしてやっぱり3Dプリンターは最高。
配線は下記のようにしました。
信号線に1Kの抵抗を入れているのがポイントです。
ついでに、モバイルバッテリーで駆動する時間を測定してました。
2500mAhで約2時間、9000mAhで約11時間動きました。
11時間動けば、イベント中に止まることは無さそうです。
Arduinoのプログラムは下記のようにしました。
#include <Adafruit_NeoPixel.h> // NeoPixel制御用ライブラリの準備
// NeoPixel WS2812Bの指定
#define NUM_LEDS 90 // NeoPixelの数
#define LED_PIN 6 // NeoPixel信号接続端子 D6
// 変数宣言
int cnt = 0; // ボタンON回数カウント用
bool state = false; // ボタン状態格納用
// NeoPixcelライブラリの設定、このまま書いておく-----------------------
// NeoPixel用の stripオブジェクトを宣言(LEO_GRB + NEO_KHZ800 は NeoPixel WS2812 使用の場合の設定)
Adafruit_NeoPixel strip(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
// 初期設定、このまま書いておく --------------------------------------
void setup() {
// NeoPixel(WS2812)初期設定
strip.begin(); // NeoPixel初期化
strip.show(); // NeoPixelを全て消灯
strip.setBrightness(75); // 明るさ倍率設定 (RGB設定値 * 明るさ倍率、最大255)
// 入力設定
pinMode(3, INPUT_PULLUP); // D3を入力端子(プルアップ)に設定 スイッチ入力用
}
// 以下に点灯させる処理を記入-----------------------------------------
// 1個のLEDの色をボタンを押すたびに変更(複数ある場合は最初の1番目のみ使用)
void loop() {
if(digitalRead(3) == 1){
// LED点灯処理 赤と緑が交互に点灯
for (int i=0; i < NUM_LEDS; i++){
if(i%2 == 0){
strip.setPixelColor(i, strip.Color(255, 0, 0)); // LED点灯処理
}else if(i%2 == 1){
strip.setPixelColor(i, strip.Color(0, 255, 0)); // LED点灯処理
}
}
strip.show();
delay(1000);
for (int i=0; i < NUM_LEDS; i++){
if(i%2 == 1){
strip.setPixelColor(i, strip.Color(255, 0, 0)); // LED点灯処理
}else if(i%2 == 0){
strip.setPixelColor(i, strip.Color(0, 255, 0)); // LED点灯処理
}
}
strip.show();
delay(1000);
}else{
rainbow(10);
}
void rainbow(int wait) {
for(long firstPixelHue = 0; firstPixelHue < 5*65536; firstPixelHue += 256) {
strip.rainbow(firstPixelHue);
strip.show(); // Update strip with new contents
delay(wait); // Pause for a moment
}
}
ちゃんと最後まで作ると、達成感がありますね。
次は何を作ろうかな~。








