Temporizador con Arduino sin usar funcion delay()

Heke:
Con la misma solucion y el 99 % del codigo que han apuntado al compañero que inicio el post.

xlopez:
Hola,

Depende de si quieres el monoestable redisparable (si se aprieta el pulsador se reinicia la cuenta de los diez segundos) o no (no se reinicia).

Voy a suponer que no lo quieres redisparable.

Tienes que pensar en el monostable como una máquina de estados.

Tienes dos estados el estado 'ESPERANDO' y el estado 'ACTIVO' .

En el estado 'ESPERANDO' lo único que tienes que fijarte es si se aprieta el botón, en ese caso se hace lo siguiente:

if (pinBoton==HIGH) {

previousMillis = currentMillis;
  estado=ACTIVO;
  ledState=HIGH;
}



Y si estamos en estado 'ACTIVO' simplente comprobamos si se han pasado los 10 segundos


if(currentMillis - previousMillis > intervalOn) {
          ledState = LOW;
          estado=ESPERANDO;
}



Quedaría algo así:


loop() {
currentMillis = millis();
if (estado==ESPERANDO){
  bloque1;
}
else {
  bloque2;
}
}

Estoy comenzando con arduino y me parecio interesante el codigo es lo que busco encender un led con un pulsador durante un tiempo determinado y luego que se apague automaticamente, podria explicar el codigo completo por favor