#include #include #include #include #define PIN D1 #define NUMPIXELS 30 uint16_t i=0,j=0,wait = 50; unsigned long lastCall = 0; byte wPos = 0; Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); HomieNode stripNode("strip", "strip"); String effect = "none"; // 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) { wheelPos = 255 - wheelPos; if(wheelPos < 85) { return pixels.Color(255 - wheelPos * 3, 0, wheelPos * 3); } if(wheelPos < 170) { wheelPos -= 85; return pixels.Color(0, wheelPos * 3, 255 - wheelPos * 3); } wheelPos -= 170; return pixels.Color(wheelPos * 3, 255 - wheelPos * 3, 0); } bool onSetPixel(const HomieRange& range, const String& value){ if(!range.isRange){ for(int i=0;i NUMPIXELS-1) { return false; } effect == "none"; pixels.setPixelColor(range.index, value.toInt()); pixels.show(); stripNode.setProperty("pixel_" + String(range.index)).send(value); } bool onSetBrightness(const HomieRange& range, const String& value){ long brightness= value.toInt(); if (brightness < 0 || brightness > 255) { return false; } pixels.setBrightness(brightness); pixels.show(); stripNode.setProperty("brightness").send(value); } bool onSetEffect(const HomieRange& range, const String& value){ effect = value; i=0,j=0,wait=50; stripNode.setProperty("effect").send(value); } bool onSetClear(const HomieRange& range, const String& value){ effect = "none"; pixels.clear(); pixels.show(); stripNode.setProperty("clear").send(value); } void loopHandler() { if (effect == "none"){ return; } else if (effect == "larson") { int SpeedDelay = 20; int ReturnDelay = 50; int EyeSize = 5; for(int i = 0; i < pixels.numPixels()-EyeSize-2; i++) { pixels.clear(); pixels.show(); pixels.setPixelColor(i, 255/10, 0, 0); for(int j = 1; j <= EyeSize; j++) { //pixels.setPixelColor(i+j, 255, 0, 0); pixels.setPixelColor(i+j, wheel(wPos++)); } pixels.setPixelColor(i+EyeSize+1, 255/10, 0, 0); pixels.show(); delay(SpeedDelay); } delay(wait); for(int i = pixels.numPixels()-EyeSize-2; i > 0; i--) { pixels.clear(); pixels.show(); pixels.setPixelColor(i, 255/10, 0, 0); for(int j = 1; j <= EyeSize; j++) { //pixels.setPixelColor(i+j, 255, 0, 0); pixels.setPixelColor(i+j, wheel(wPos++)); } pixels.setPixelColor(i+EyeSize+1, 255/10, 0, 0); pixels.show(); delay(SpeedDelay); } delay(wait); } else if (effect == "randomfade") { if(lastCall + wait > millis()){ return; } lastCall = millis(); for(int i=0;i= millis()){ return; } if(j<256) { if(i