Condizione if e calcolo intervallo di tempo

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!

Prova ad applicare la logica del blink whitout delay.
Metti millis in una variabile nella funzione che muove i motori. Poi nell'if verifichi il tempo trascorso in relazione al tuo intervallando.

Fatto e funziona :slight_smile: