Salve ragazzi, mi sto scervellando per realizzare un programma che funzioni in questo modo:
a tre pressioni del pulsante (effettuate entro un determinato tempo ad esempio 2 secondi altrimenti tutto si resetta) si deve eccitare un rele per un secondo, poi si deve diseccitare e tutto si deve resettare. Se la pressione invece avviene solo una o due due volte entro questi 2 secondi, il sistema si deve resettare e ripartire da capo in attesa delle 3 pressioni.
Comincia a studiarti il funzionamento dell'esempio che trovi nell'IDE a File -> Esempi -> 02.Digital -> BlinkWithoutDelay
Ciao,
P.
Un metodo semplicissimo potrebbe essere l'utilizzo di millis() e while() come nell'esempio sotto:
unsigned long tempolimite = 3000; //millisecondi
unsigned long tempo = 0;
unsigned long tempofine = 0;
int pressioni = 0;
if (digitalRead(pinPulsante) == HIGH) {
tempofine = millis() + tempolimite;
pressioni = 1;
while ((millis() < tempofine) && (pressioni < 3)) {
if (digitalRead(pinPulsante) == HIGH) {
pressioni++;
while(digitalRead(pinPulsante) == HIGH) {}
}
}
}
if (pressioni == 3) {
digitalWrite(pinRele, HIGH);
delay(1000);
digitalWrite(pinRele, LOW);
}
}