/* Einschaltzeiten mit millis() erzeugen
* Ein PIR-Sensor triggert eine LED, die Ausschaltzeit wird jeweils gespeichert.
* Wenn die ausschaltzeit der jeweiligen LED erreicht ist, wird diese ausgeschaltet.
*/
//***** Taster und LEDs wie auf bleuer Platine **********************
const int LED7=32, LED6=33, LED5=25, LED4=26, LED3=27, LED2=14,LED1=12, LED0=13;
const int PIR7=23, PIR6=22, PIR5=21, PIR4=19, PIR3=18, PIR2=5, PIR1=17, PIR0=16;
//***** Globale Variablen *******************************************
unsigned long Aus7, Aus6, Aus5, Aus4, Aus3, Aus2, Aus1, Aus0;
unsigned long Laufzeit;
//***** Setup, wird 1x ausgeführt ***********************************
void setup() {
Serial.begin(115200);
pinMode(LED7, OUTPUT);
pinMode(LED6, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED0, OUTPUT);
pinMode(PIR7, INPUT);
pinMode(PIR6, INPUT);
pinMode(PIR5, INPUT);
pinMode(PIR4, INPUT);
pinMode(PIR3, INPUT);
pinMode(PIR2, INPUT);
pinMode(PIR1, INPUT);
pinMode(PIR0, INPUT);
Laufzeit = 10000; // 10 Sekunden
}
//***** Loop wird immer wieder ausgeführt ****************************
void loop() {
unsigned long currentMillis = millis ( );
// nachtriggerbar, wenn der Sensor bei leuchtender LED
// wieder aktiviert wird, wird die Zeit verlängert
if(digitalRead(PIR7) ) {
digitalWrite(LED7, HIGH ); // EINschalten
Aus7 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus7 ) digitalWrite(LED7, LOW ); // AUSschalten
if(digitalRead(PIR6) ) {
digitalWrite(LED6, HIGH ); // EINschalten
Aus6 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus6 ) digitalWrite(LED6, LOW ); // AUSschalten
if(digitalRead(PIR5) ) {
digitalWrite(LED5, HIGH ); // EINschalten
Aus5 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus5 ) digitalWrite(LED5, LOW ); // AUSschalten
if(digitalRead(PIR4) ) {
digitalWrite(LED4, HIGH ); // EINschalten
Aus4 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus4 ) digitalWrite(LED4, LOW ); // AUSschalten
if(digitalRead(PIR3) ) {
digitalWrite(LED3, HIGH ); // EINschalten
Aus3 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus3 ) digitalWrite(LED3, LOW ); // AUSschalten
if(digitalRead(PIR2) ) {
digitalWrite(LED2, HIGH ); // EINschalten
Aus2 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus2 ) digitalWrite(LED2, LOW ); // AUSschalten
if(digitalRead(PIR1) ) {
digitalWrite(LED1, HIGH ); // EINschalten
Aus1 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus1 ) digitalWrite(LED1, LOW ); // AUSschalten
if(digitalRead(PIR0) ) {
digitalWrite(LED0, HIGH ); // EINschalten
Aus0 = currentMillis + Laufzeit;
}
if ( currentMillis >= Aus0 ) digitalWrite(LED0, LOW ); // AUSschalten
}
LED32
LED33
LED25
LED26
LED27
LED14
LED13
LED12
Treppenhauslicht, 8 Stockwerke mit Bewegungsmeldern
5.OG
4.OG
6.OG
3.OG
2.OG
1.OG
UG
EG