parliamo di arduino mega e scheda a quattro relè che mi comandano dei led tramite app fatta con blynk .
funziona tutto perfettamente ma quello che vorrei fare e premere un bottone del relè 1 per esempio e dopo 1 secondo in automatico lo dovrebbe spegnere , (cambiare stato da HIGH a LOW), quindi pensavo di integrare la funzione timeout per cambiare lo stato.....
Mi potete indicare un metodo o una guida per imparare questo comando
Ciao! Non ho mai sentito la funzione Timeout su arduino????
Quello che vorresti fare si fa con la funzione millis()
byte stato=0;
unsigned long tempo=0;
void loop(){
if(digitalRead(pulsante)==LOW){// Quando si preme il pulsante
digitalWrite(LED,HIGH); // Accendo il led
tempo=millis(); // Acquisto il tempo
stato=1;
}
if(stato==1 && millis()-tempo >=1000){//se è passato un secondo
stato=0;// Questo if non verrà più eseguito fino a quando non si preme il pulsante
digitalWrite(LED,LOW);
}
}
io sto usando i rele di arduino come dei pulsanti io aziono il rele dell'arduino e mi attiva un ulteriore rele , ma se lo faccio con blynk il problema non c'è , perche posso impostare il bottone come pulsante , ma se lo faccio con ifttt, non riesco a fare comportare il rele di arduino come pulsante, ma si comporta come un interruttore.
quindi pensavo di farlo fare tramite software tu accendi il relè 1 e lui dopo tot tempo cambia stato ....
Ho provato senza successo con
timer.setTimeout(500L,
ma come giustamente ti ha spiegato torn24, non è necessario scomodare una libreria, lo puoi fare molto semplicemente con la funzione millis()in modo da risparmiare risorse.
Il codice che ti ho postato è lato arduino, non importa quale interfaccia grafica usi, se arduino legge il segnale come se fosse un pin "dall'interfaccia grafica riconosco la pressione del pulsante", poi il codice è identico.
Non so come ricevi un segnale ma al massimo dovrai sostituire if(digitalRead(pulsante)==LOW), con quello per percepire l'interfaccia grafica...