Temporizador con Arduino sin usar funcion delay()

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;
}
}