Ho due schede Arduino: una per inviare sei segnali IR tramite un joypad e l'altra che li riceve e muove dei motori a seconda dei comandi.
Il tutto funziona bene solo che quando la scheda ricevente perde il segnale infrarosso, i motori continuano a muoversi rispettando l'ultimo segnale ricevuto.
Io vorrei che si fermassero se il segnale viene perso.
Quindi, ho fatto così:
void loop() {
if (irrecv.decode(&results)) {
// muovi i motori
}
else {
//stop motors;
}
il fatto è che la scheda che invia i segnali, li invia con un minimo di ritardo e quindi l'andamento dei motori sulla scheda ricevente diventa a singhiozzo perchè non appena il ciclo if() becca la condizione di non ricezione dei segnali (che in realtà è la pausa tra un segnale e l'altro) stoppa i motori per poi farli rifunzionare appena riceve l'altro messaggio.
Vorrei fare una cosa del genere:
void loop() {
if (irrecv.decode(&results)) {
// process data
}
else if( !(irrecv.decode(&results) &&tempo_trascorso > intervallo_tra_segnali){
//ok, non ci sono messaggi da un pò di millisecondi, fermo i motori;
}
e quindi vedere se non ci sono segnali IR dopo un certo numero di millisecondi, ma non so come implementare la cosa.
Sapreste darmi una mano?
Vi ringrazio!