// Temporizzatore con ritardo alla diseccitazione NON bloccante
#define PIR 12
#define LED 7
#define T_OFF 10000
void setup() {
pinMode(PIR, INPUT);
pinMode(LED, OUTPUT);
}
void loop() {
// Sensore PIR attivato
// (il led verde da un'idea della durata del segnale in ingresso)
static uint32_t pirTime;
if(digitalRead(PIR)) {
pirTime = millis() + T_OFF;
digitalWrite(LED, HIGH);
}
// Quando millis() == pirTime +/- 10 millisecondi di tolleranza,
// il led rosso viene spento
if(abs(millis() - pirTime) < 10) {
digitalWrite(LED, LOW);
}
}