[HELP] Filtro software anti-polvere per fotocellula

if (!Fotocellula_1) {
     if (millis() - milli_precedente > intervallo) {
         if(++contatore >= 999) {
              contatore = 0;
         }
         Riempi();
         start_timeout = millis();
         do {
              Fotocellula_1 = digitalRead(in_NPN);
         } while ((!Fotocellula_1) && (millis() - start_timeout < timeout));
    }     
}

Ho messo un timeout per l'uscita dal do..while. Dopo il while puoi controllare Fotocellula_1: se è a 0 vuol dire che sei uscito per timeout.