Ho un problema con questo codice, praticamente quando rileva un valore infrarossi in un certo range, scatta il conteggio dei secondi, poi quando ri arriva il segnale mi invia il tempo tra un impulso e l'altro.
Il problema è che spesso riceve più impulsi in poco tempo e nel serial print mi mostra per esempio
0s
0s
20s
0s
0s
26s
0s
0s
come posso evitare di farmi stampare quei valori "nulli" ?
unsigned long mtime;
unsigned long time;
int start = 0;
void setup () {
Serial.begin(9600);
}
void loop() {
if (analogRead(A0) < 800 && start == 0)
{ // Se valore ir < 800 ed il segnale viene per la prima volta
mtime = millis(); // tempo di inizio conteggio
start=1;
}
if (analogRead(A1) < 800 && start == 1)
{ //Stop
time = (millis() - mtime)/100;// fa la differenza e converte in centesimi di secondi
start = 0;
Serial.println(time, DEC);// mostra sul pc il tempo
}
}