Senza le variabili acceso1...acceso6 il LOOp so blocca dopo un certo numero di cicli.
NinoAL
/* Candeliere votivo. Alla pressione del pulsante la relativa candela rimane accesa per n. minuti */ # define CONTA 2 # define LED1 8 # define LED2 9 # define LED3 10 # define LED4 11 # define LED5 12 # define LED6 13 int ValueConta = 0; int lastValueConta = 0; int contaImpulsi = 0; int ValueUno = 1; int ValueDue = 2; int ValueTre = 3; int ValueQuattro = 4; int ValueCinque = 5; int ValueSei = 6; byte acceso1 = LOW; byte acceso2 = LOW; byte acceso3 = LOW; byte acceso4 = LOW; byte acceso5 = LOW; byte acceso6 = LOW; unsigned long iMillis1 = 0; unsigned long iMillis2 = 0; unsigned long iMillis3 = 0; unsigned long iMillis4 = 0; unsigned long iMillis5 = 0; unsigned long iMillis6 = 0; int TempoON = 3000; void setup() { pinMode(CONTA, INPUT ); pinMode (LED1, OUTPUT); pinMode (LED2, OUTPUT); pinMode (LED3, OUTPUT); pinMode (LED4, OUTPUT); pinMode (LED5, OUTPUT); pinMode (LED6, OUTPUT); } void loop() { //---------- Leggi pezzi su Pin2 ------------------- ValueConta = digitalRead(CONTA); if ( ValueConta != lastValueConta) { if ( ValueConta == HIGH) { contaImpulsi++; delay(20); }}// DebounceTime lastValueConta = ValueConta; if ( ValueConta == HIGH && acceso1 == LOW && contaImpulsi==ValueUno) { digitalWrite(LED1, HIGH); acceso1 = HIGH; iMillis1 = millis(); } if ( acceso1 == HIGH && (millis()-iMillis1) > TempoON) { digitalWrite(LED1, LOW); acceso1 = LOW; } if ( ValueConta == HIGH && acceso2 == LOW && contaImpulsi==ValueDue) { digitalWrite(LED2, HIGH); acceso2 = HIGH; iMillis2 = millis(); } if ( acceso2 == HIGH && (millis()-iMillis2) > TempoON) { digitalWrite(LED2, LOW); acceso2 = LOW; } if ( ValueConta == HIGH && acceso3 == LOW && contaImpulsi==ValueTre) { digitalWrite(LED3, HIGH); acceso3 = HIGH; iMillis3 = millis(); } if ( acceso3 == HIGH && (millis()-iMillis3) > TempoON) { digitalWrite(LED3, LOW); acceso3 = LOW; } if ( ValueConta == HIGH && acceso4 == LOW && contaImpulsi==ValueQuattro) { digitalWrite(LED4, HIGH); acceso4 = HIGH; iMillis4 = millis(); } if ( acceso4 == HIGH && (millis()-iMillis4) > TempoON) { digitalWrite(LED4, LOW); acceso4 = LOW; } if ( ValueConta == HIGH && acceso5 == LOW && contaImpulsi==ValueCinque) { digitalWrite(LED5, HIGH); acceso5 = HIGH; iMillis5 = millis(); } if ( acceso5 == HIGH && (millis()-iMillis5) > TempoON) { digitalWrite(LED5, LOW); acceso5 = LOW; } if ( ValueConta == HIGH && acceso6 == LOW && contaImpulsi==ValueSei) { digitalWrite(LED6, HIGH); acceso6 = HIGH; iMillis6 = millis(); } if ( acceso6 == HIGH && (millis()-iMillis6) > TempoON) { digitalWrite(LED6, LOW); acceso6 = LOW; } if ( contaImpulsi > 5) { contaImpulsi= 0; } }
Nessun commento:
Posta un commento