Tiempo sin interrupciones

El delay no es una interrupción. Una interrupción es otra cosa. Es el llamado a un rutina rapida que hace algo y devuelve variables.
Ahora la respuesta a no usar la demora bloqueante delay es millis() y esta perfectamente documentada en la sección Documentación de este foro.

Lee esto para entender máquinas de estado:

y esto para entender millis()