#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_PULLUP); pinMode(SENSORPIN2, INPUT_PULLUP); pixels.begin(); Serial.begin(9600); Serial.println("LED Test"); } void EinschaltsequenzTag() { for(int i=-7; i=0; i--) { pixels.setPixelColor(i, pixels.Color(0,0,0,0)); pixels.setPixelColor(i-1, pixels.Color(20,0,0,0)); // rote Pixel 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)); // PINK } pixels.show(); } void loop() { code = 0; if (!digitalRead(SENSORPIN1)) code |= INPUT1; if (!digitalRead(SENSORPIN2)) code |= INPUT2; flanke = code & ~code_old; code_old = code; if( (flanke & INPUT1) && !led_active) { // Flanke Eingang1 Serial.println("Flanke Eingang 1"); EinschaltsequenzTag(); EingeschaltenTag(); led_active = true; } else if( (flanke & INPUT2) && !led_active) { // Flanke Eingang2 Serial.println("Flanke Eingang 2"); EinschaltsequenzNacht(); EingeschaltenNacht(); led_active = true; } else if( (code & INPUT12) == INPUT12 ) { // beide Eingänge aktiv Serial.println("Beide aktiv"); Bunt(); led_active = true; } else if ( !(code & INPUT12) && led_active) { // beide Eingänge inaktiv Serial.println("Ausschalten"); Ausschaltsequenz(); led_active = false; } delay(100); }