Ciao a tutti, oggi ho fatto un test con un sensore infrarosso, l'obiettivo era di realizzare un piccolo contatore che contasse quanti oggetti vengono introdotti in una scatoletta, per farla semplice. Lo script l'ho scritto abbastanza in fretta ma funziona. Per attuare una sorta di debouncing ho dato un delay di 200 millisecondi ogni volta che il "contatto" viene chiuso. Mi chiedevo però se non fosse più affidabile inserire una variabile che considerasse un tempo minimo per il quale un oggetto debba essere rilevato, prima che il contatore lo consideri. La domanda è: costruendola sottraendo i millisecondi trascorsi durante il passaggio da quelli totali dall'inizio del ciclo, alla lunga non manderei in overflow arduino?
const int sensore = A0;
int valoreIR = 0;
int contatore = 0;
int state = HIGH;
int previous = HIGH;
void setup ()
{
Serial.begin (9600);
}
void loop(){
previous = state;
valoreIR = analogRead (sensore);
if (valoreIR == 0)
{ state = LOW;
}
else if (valoreIR > 0)
{ state = HIGH;
}
if ( state == HIGH && previous == LOW) {
add();
}
}
void add(){
contatore++;
Serial.println(contatore);
digitalWrite(13, HIGH); // set the LED on
delay(200);
digitalWrite(13, LOW); // set the LED on
}