PIR Sensor - Temporizador

Buenas Una consulta, tengo un arduino UNO y un sensor PIR de movimiento, lo estoy utilizando para encender la lampara del Baño automaticamente el entrar. Funciona todo bien pero el periodo que permanece encendido es de solo 5 Segundos, luego se apaga y al moverse uno se vulve a encender. Hasta ahi todo bien, el sensor esta configurado que al detectar un movimiento manda un "HIGH" al arduino a un pin digital que esta configurado como "INPUT", cuando recibe la señal de "HIGH" activa un relevador (Relay) que enciende la lampara del baño, pero solo dura unos segundos y vuelve a apagar.

La consulta es la siguiente: ¿Como puedo hacer que cuando el Arduino reciba el "HIGH" del sensor pir inicie un conteo de 20segundos para apagar el relay?

y ¿que ese contador se reinicie cada vez que se detecta un movimiento? ¿me explico?

algo asi como:

if(pirsensor == HIGH){ pinrelevador, HIGH; //y quede HIGH por 20Seg y que se reinicie el contador cada vez que se recibe una señal del Sensor pir }

LA Idea es NO usar Delays. es por eso que consulto con uds.

Dede ya les agradeceria muchisimo.

Te invito a que leas las Normas del foro para saber como postear códigos. definiendo variables previas como

// Antes del setup
unsigned long start = 0;
bool InicioDisparo = false;

 // donde corresponda usa esto
  if (pirsensor == HIGH){ // suponiendo que el rele del PIR no genere rebotes 
     InicioDisparo = true;
     digitalWrite(pinrelevador, HIGH); // pongo en 1 el Rele
     start = millis();                 // cargo Start con el valor de millis()
  }

  if (InicioDisparo && (millis()-start> 20000UL) { 
       digitalWrite(pinrelevador, LOW);  //y quede HIGH por 20Seg y que se reinicie el contador cada vez que se recibe una señal del Sensor pir
       InicioDisparo = false;            // no dejo que pase de nuevo hasta que se rearme.
  }

Buenos Dias Dsiculpen la demora en responder los resultados. Antes que nada disculpen por la forma en colocar los codigos, lo tendré en cuenta para la próxima vez.

surbyte he probado el código que posteaste, me funcionó a la primera, te agredezco infinitamente.

Pueden dar por cerrado este topic. He resolvido el problema.

Muchas gracias.

Tu debes darlo por cerrado. Agrega SOLUCIONADO al título. Vas a tu primer post, luego More, luego Modify y click en el título y agregas SOLUCIONADO. Muy fácil!!