#include #define NEOPIXEL_PIN 6 // Datenausgang für LEDs #define NUMPIXELS 66 // Anzahl der LEDs #define SENSORPIN1 A3 // Schalter hell #define SENSORPIN2 A5 // Schalter dunkel #define INPUT1 (1<<0) // Bitmuster für Codeauswertung #define INPUT2 (1<<1) // Bitmuster für Codeauswertung #define INPUT12 (INPUT1 | INPUT2) // Bitmuster für Codeauswertung, beide Eingänge Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIXEL_PIN, NEO_GRBW + NEO_KHZ800); int code, flanke; int code_old; bool led_active = false; void setup() { pinMode(SENSORPIN1, INPUT); pinMode(SENSORPIN2, INPUT); pixels.begin(); } void EinschaltsequenzTag() { for(int i=0; i<(NUMPIXELS-8); i++) { pixels.setPixelColor(i, pixels.Color(100,100,200,250)); // weiß wird hell dargestellt pixels.show(); pixels.setPixelColor(i+1, pixels.Color(0,0,0,200)); pixels.setPixelColor(i+2, pixels.Color(0,0,0,150)); pixels.setPixelColor(i+3, pixels.Color(0,0,0,100)); pixels.setPixelColor(i+4, pixels.Color(0,0,0,50)); pixels.setPixelColor(i+5, pixels.Color(0,10,0,0)); pixels.setPixelColor(i+6, pixels.Color(0,60,0,0)); pixels.setPixelColor(i+7, pixels.Color(0,150,0,0)); pixels.setPixelColor(i+8, pixels.Color(0,250,0,0)); // erstes Pixel grün pixels.show(); delay(20); } } void EinschaltsequenzNacht() { for(int i=0; i<(NUMPIXELS-8); i++) { pixels.setPixelColor(i, pixels.Color(20,20,20,20)); // weiß wird dunkel dargestellt pixels.show(); pixels.setPixelColor(i+1, pixels.Color(0,0,0,20)); pixels.setPixelColor(i+2, pixels.Color(0,0,0,30)); pixels.setPixelColor(i+3, pixels.Color(0,0,0,40)); pixels.setPixelColor(i+4, pixels.Color(0,0,0,50)); pixels.setPixelColor(i+5, pixels.Color(0,10,0,0)); pixels.setPixelColor(i+6, pixels.Color(0,60,0,0)); pixels.setPixelColor(i+7, pixels.Color(0,150,0,0)); pixels.setPixelColor(i+8, pixels.Color(0,250,0,0)); // erstes Pixel grün pixels.show(); delay(20); } } void EingeschaltenTag() { for(int i=0; i=4; i--) { pixels.setPixelColor(i, pixels.Color(0,0,0,0)); pixels.show(); pixels.setPixelColor(i-1, pixels.Color(20,0,0,0)); //letztes Pixel rot pixels.setPixelColor(i-2, pixels.Color(60,0,0,0)); pixels.setPixelColor(i-3, pixels.Color(120,0,0,0)); pixels.setPixelColor(i-4, pixels.Color(255,0,0,0)); pixels.show(); delay(50); } } void Ausgeschalten() { for(int i=0; i=0; i--) { pixels.setPixelColor(i, pixels.Color(150,0,150,0)); // sind beide Kanäle "akiviert", leuchtet es pink pixels.show(); delay(20); } } void loop() { if (digitalRead(SENSORPIN1)) code |= INPUT1; if (digitalRead(SENSORPIN1)) code |= INPUT2; flanke = code & ~code_old; code_old = code; if( (flanke & INPUT1) && !led_active) { // Flanke Eingang1 EinschaltsequenzTag(); EingeschaltenTag(); led_active = true; } else if( (flanke & INPUT2) && !led_active) { // Flanke Eingang2 EinschaltsequenzNacht(); EingeschaltenNacht(); led_active = true; } else if( (code & INPUT12) ) { // beide Eingänge aktiv Bunt(); led_active = true; } else if ( !(code & INPUT12) && led_active) { // beide Eingänge inaktiv Ausschaltsequenz(); led_active = false; } delay(100); }