Arduino UNOにWS2812/NeoPixelカラーLEDを接続してみましょう。
ここでは、電源と信号線の距離の関係で、カラーLEDをGNDとA0に繋ぎました。
UNOに接続したカラーLED
#include <BlynkSimpleStream.h> #include <Adafruit_NeoPixel.h> // BlynkのAuth Tokenを設定 char auth[] = "YOURAPPAUTHTOKEN" ; #define PIN 14 // A0です Adafruit_NeoPixel strip = Adafruit_NeoPixel(24, PIN, NEO_GRB + NEO_KHZ800) ; // Input a value 0 to 255 to get a color value. // The colours are a transition r - g - b - back to r. uint32_t Wheel(byte WheelPos) { if (WheelPos < 85) { return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0) ; } else if (WheelPos < 170) { WheelPos -= 85 ; return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3) ; } else { WheelPos -= 170 ; return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3) ; } } int pixelBrightness = 50 ; // LEDの明るさ // V0の値はスライダーなどで指定:0-255 BLYNK_WRITE(V0) { int shift = param.asInt(); for (int i = 0; i < strip.numPixels(); i++) { strip.setPixelColor(i, Wheel((shift + (i % 2) * 128) & 255)) ; } strip.show() ; } // V1の値はスライダーなどで指定:10-255 BLYNK_WRITE(V1) { pixelBrightness = param.asInt(); strip.setBrightness(pixelBrightness) ; strip.show() ; } void setup() { Serial.begin(9600) ; // シリアルはモニター用ではなくネット通信に使用 Blynk.begin(Serial, auth) ; // USBのシリアル通信でネットと接続 Blynk.syncAll() ; // サーバーに記録されているピンの状態を復元 strip.begin() ; strip.setBrightness(pixelBrightness) ; strip.show() ; } void loop() { Blynk.run() ; }
スマートフォンのBlynkアプリにはSliderを2つ配置します。
色指定は、V0に割り当てています。指定する数値の範囲は、0から255です。
スライダーを動かすとスライダーから指を離さなくてもデバイスに反映されるように、SEND ON RELEASEはOFFとします。
明るさ指定は、V1に割り当てています。指定する数値の範囲は、10から255です。
明るさを0にすると、各LEDに設置している色情報が失われるようなので、最低を10にしています。
BLYNK_WRITE(V1)の中で、BLYNK_WRITE(V0)の中で行っている色設定も更新するようにすれば、0からにすることもできます。
スライダーを動かすとスライダーから指を離さなくてもデバイスに反映されるように、SEND ON RELEASEはOFFとします。