La función delay()
no regresa hasta que el intervalo requerido haya expirado. Durante ese tiempo, lee constantemente el reloj, buscando el final del intervalo. Esto significa que su programa no puede hacer nada más durante ese tiempo.
Una alternativa es establecer un temporizador para su programa que interrumpa lo que esté haciendo el programa cuando el tiempo expire al llamar a una función para (en este caso) cambiar el estado del LED. Mientras tanto, una vez que se establece el temporizador, su programa puede continuar haciendo algo más útil.
En un programa intermitente, donde parpadear un LED es el punto, no hay nada más que hacer, pero en general, querrá que sus programas puedan mantener una pantalla, reaccionar a los botones o un teclado. , y lea algunos sensores, por ejemplo, y parece que los hace simultáneamente.
Actualización:
Un reloj o temporizador es un registro de hardware que el programa puede leer, que se cuenta automáticamente hacia arriba o hacia abajo a una velocidad fija, como una vez cada milisegundo. Este conteo lo realiza el hardware sin que el programa tenga que hacer nada. Para demorar, por ejemplo, 2 segundos, la función delay()
leerá el registro del reloj, le agregará 2000 (el número de milisegundos de la demora requerida) para encontrar la hora de finalización, luego seguir leyendo el registro del reloj hasta que sea igual o superior a ese tiempo.
En el segundo caso, arriba, un registro de temporizador se establecería en 2000 (nuevamente, el número de milisegundos para retrasar), pero en este caso el hardware disminuye que se registra cada milisegundo, y interrumpe el programa cuando el registro del temporizador llega a 0.