/* Under Door Lighting Sketch by PerfectPixel, 2016. Code edited from examples on Tweaking4all.com. Library provided by Adafruit. Tweaking4all: http://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/ Adafruit: https://www.adafruit.com/ PerfectPixel: http://www.instructables.com/member/perfectpixel all code is public domain. */ #include #define PIN 9 #define NUM_LEDS 27 int BUTTON1_A = 11; int BUTTON1_B = 12; Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800); void setup() { pinMode(BUTTON1_A, OUTPUT); pinMode(BUTTON1_B, INPUT); digitalWrite(BUTTON1_A, HIGH); strip.begin(); strip.show(); } void loop(){ while(digitalRead(BUTTON1_B) == LOW){ //Effects while the door is open switch(random(11)){ //change these effects to suit your preferences! case 1: CylonBounce(0, 255, 150, 7, 35, 100); break; case 2: rainbowCycle(5); break; case 3: RunningLights(0,0,255, 50); break; case 4: CylonBounce(255, 100, 0, 7, 35, 100); break; case 5: RunningLights(255,0,0, 50); break; case 6: rainbowCycle(2); break; case 7: CylonBounce(100, 100, 100, 3, 35, 100); break; case 8: RunningLights(0,255,0, 50); break; case 9: rainbowCycle(6); break; case 10: rainbowCycle(10); break; } } while(digitalRead(BUTTON1_B) == HIGH){ //Effects while the door is closed setAll(0,0,0); } } /* * * * * * ------------------ */ void CylonBounce(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){ for(int i = 0; i < NUM_LEDS-EyeSize-2; i++) { setAll(0,0,0); setPixel(i, red/10, green/10, blue/10); for(int j = 1; j <= EyeSize; j++) { setPixel(i+j, red, green, blue); } setPixel(i+EyeSize+1, red/10, green/10, blue/10); showStrip(); delay(SpeedDelay); } delay(ReturnDelay); for(int i = NUM_LEDS-EyeSize-2; i > 0; i--) { setAll(0,0,0); setPixel(i, red/10, green/10, blue/10); for(int j = 1; j <= EyeSize; j++) { setPixel(i+j, red, green, blue); } setPixel(i+EyeSize+1, red/10, green/10, blue/10); showStrip(); delay(SpeedDelay); } delay(ReturnDelay); } void rainbowCycle(int SpeedDelay) { byte *c; uint16_t i, j; for(j=0; j<256*2; j++) { for(i=0; i< NUM_LEDS; i++) { c=Wheel(((i * 256 / NUM_LEDS) + j) & 255); setPixel(i, *c, *(c+1), *(c+2)); } showStrip(); delay(SpeedDelay); } } byte * Wheel(byte WheelPos) { static byte c[3]; if(WheelPos < 85) { c[0]=WheelPos * 3; c[1]=255 - WheelPos * 3; c[2]=0; } else if(WheelPos < 170) { WheelPos -= 85; c[0]=255 - WheelPos * 3; c[1]=0; c[2]=WheelPos * 3; } else { WheelPos -= 170; c[0]=0; c[1]=WheelPos * 3; c[2]=255 - WheelPos * 3; } return c; } void RunningLights(byte red, byte green, byte blue, int WaveDelay) { int Position=0; for(int i=0; i