注文してから21日・・・待ちかねた5V,20A電源がついに香港から届きました!
これでクリスマスツリー・イルミネーションが完成します!
モデル番号:SF-100A
入力:入力;110V/220V:110V/220V
出力:DC 5V定電圧、20A
サイズ・重量:20×9.8 X4.3cm(L* W* H)・516g
ケースの材質・色:金属・シルバートーン
1. 入力電圧の切り替え
この電源は110or220VACの入力電圧に対応しており、それを切り替えるスイッチを探した所、パンチングメタルの奥に有りました。
図1の通り細いマイナスドライバーを隙間から入れてスライドスイッチを110VACに切り替えました・・・合理的ですね~
図1:110VAC(交流100V)に切り替え
2. 電源ボックスへ取り付け
図2の様に、購入した電源の入力端子に100VAC(白)の配線と、電源ボックスに穴をあけ、5VDC出力端子に赤(+)黒(-)の電線を配線しました。
図2:電源へ配線
3. 出力電圧の調整
電源の端子右側に「+V AD J」と書かれた出力電圧の調整つまみがありますので、これを使います。
電源に100VACを入力した状態で、5VDC出力端子の電圧をテスターで確認しました。
マイナスドライバーで調整つまみを左回り一杯から右周り一杯に回すと5.101V~7.21Vとそもそも5V前後の調整が出来ません!
5Vピッタリに調整したかったのですが、諦めて5.101V良しとします
図3:出力調整
図4:リップル確認
5. プログラム
最終的にArduinoに書き込んだプログラムはこんな感じです。
LED自体がかなり明るいので最大輝度を85/256(33%)位に落としてます。
/* クリスマスツリー・イルミネーション!制御プログラム 部品:フルカラーシリアルLEDテープ、人感センサー、CDS 2016年12月18日作成 NOBのArduino日記! */ #include <Adafruit_NeoPixel.h> //ライブラリの読み込み #define MAX_VAL 85 // 最大輝度の設定をする(暗い←0 ~ 255→明い) #define DELAY_TIME 30 //待ち時間1の設定 #define DELAY_TIME2 20 //待ち時間2の設定 #define DELAY_TIME3 50 //待ち時間3の設定 //インスタンスの設定(実際の使用環境の設定の事) // NEO_RGB Pixels are wired for RGB bitstream // NEO_GRB Pixels are wired for GRB bitstream // LEDテープの制御ICがWS2812ならNEO_KHZ800 / WS2811ならNEO_KHZ400 // NEO_KHZ400 400 KHz bitstream (e.g. FLORA pixels) // NEO_KHZ800 800 KHz bitstream (e.g. High Density LED strip) //Adafruit_NeoPixel(LEDの使用個数、Arduinoのピン番号、色の並び+データの転送速度) Adafruit_NeoPixel strip = Adafruit_NeoPixel(237, 3, NEO_GRB + NEO_KHZ800); void setup() { strip.begin(); //インスタンスの使用を開始、この時全てのLEDの状態を「0」とする。 strip.show(); //Arduinoから全てのLEDへオフ信号「0」を転送し初期化する。 } void loop() { //暗くてかつ近くに人の動きが有る時にLEDを点灯する! if (digitalRead(A3) == LOW || analogRead(2) > 500) { colorWipe(strip.Color(0, 0, 0), DELAY_TIME); // Black } else { //LEDへ出力する各色の設定例 colorWipe(strip.Color(MAX_VAL, 0, 0), DELAY_TIME); // Red colorWipe(strip.Color(0, MAX_VAL, 0), DELAY_TIME); // Green colorWipe(strip.Color(MAX_VAL, MAX_VAL, 0), DELAY_TIME); // Yellow colorWipe(strip.Color(0, 0, MAX_VAL), DELAY_TIME); // Blue colorWipe(strip.Color(MAX_VAL, 0, MAX_VAL), DELAY_TIME); // Purple colorWipe(strip.Color(0, MAX_VAL, MAX_VAL), DELAY_TIME); // Cyan colorWipe(strip.Color(MAX_VAL, MAX_VAL, MAX_VAL), DELAY_TIME); // White //LEDを虹色に変化させる rainbow(DELAY_TIME2); rainbowCycle(DELAY_TIME2); // 劇場風の照明 theaterChase(strip.Color(MAX_VAL, MAX_VAL, MAX_VAL), DELAY_TIME3); //White theaterChase(strip.Color(MAX_VAL, 0, 0), DELAY_TIME3); // Red theaterChase(strip.Color(0, 0, MAX_VAL), DELAY_TIME3); // Blue theaterChaseRainbow(DELAY_TIME3); } } // ①全てのLEDを指定色で点灯させる関数 void colorWipe(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, c); strip.show(); delay(wait); } } // ②LEDを連続的に虹色に変化させる関数 void rainbow(uint8_t wait) { uint16_t i, j; for (j = 0; j < 256; j++) { for (i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((i + j) & 255)); } strip.show(); delay(wait); } } // ③虹色を均等に分布させる関数 void rainbowCycle(uint8_t wait) { uint16_t i, j; for (j = 0; j < 256 * 5; j++) { // 5 cycles of all colors on wheel for (i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255)); } strip.show(); delay(wait); } } // ④劇場風のクロールライトにする関数 void theaterChase(uint32_t c, uint8_t wait) { for (int j = 0; j < 10; j++) { //do 10 cycles of chasing for (int q = 0; q < 3; q++) { for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) { strip.setPixelColor(i + q, c); //turn every third pixel on } 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 } } } } // ⑤虹の様な劇場風クロールライトにする関数 void theaterChaseRainbow(uint8_t wait) { for (int j = 0; j < 256; j++) { // cycle all 256 colors in the wheel for (int q = 0; q < 3; q++) { for (uint16_t i = 0; i < strip.numPixels(); i = i + 3) { strip.setPixelColor(i + q, Wheel( (i + j) % 255)); //turn every third pixel on } 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 } } } } // 色の値を取得するには、0〜255の値を入力します。 // 色の移り変わりはR(赤)→G(緑)→B(青)からR(赤)に戻ります。 uint32_t Wheel(byte WheelPos) { if (WheelPos < 85) { return strip.Color((WheelPos * 3) * MAX_VAL / 255, (255 - WheelPos * 3) * MAX_VAL / 255, 0); } else if (WheelPos < 170) { WheelPos -= 85; return strip.Color((255 - WheelPos * 3) * MAX_VAL / 255, 0, (WheelPos * 3) * MAX_VAL / 255); } else { WheelPos -= 170; return strip.Color(0, (WheelPos * 3) * MAX_VAL / 255, (255 - WheelPos * 3) * MAX_VAL / 255); }
}
図1:プログラム例
6. 仕上げ!
これで全ての準備は整いましたので図5の通り全部つなげます!
図5:仕上げ
7. 確認!
正常に動作するか確認の為スイッチオン!
イルミネーション点灯しました!
励みになりますのでよければクリック下さい(^o^)/