![Cómo eliminar una rama remota en Git](https://trspos.com/wp-content/uploads/git-eliminar-rama-remota-400x267.jpg)
Arduino millis() vs delay()
![Arduino millis() vs delay()](https://trspos.com/wp-content/uploads/millis-vs-delay-arduino.jpg)
Arduino es una plataforma de hardware y software libre que nos permite realizar diseños en electrónica y programación de manera sencilla y rápida. Uno de los aspectos más importantes en el desarrollo de proyectos con Arduino es el uso eficiente de los recursos del microcontrolador, siendo la implementación de tiempo uno de los puntos clave para lograr una buena optimización del código. En este artículo se explicará la diferencia entre las funciones delay() y millis(), centrándose en su uso y como afecta el rendimiento de nuestro proyecto.
¿Qué es la función delay()?
La función delay() en Arduino detiene la ejecución de nuestro programa por la cantidad especificada de milisegundos, haciendo que el microcontrolador espere antes de continuar con el resto del código. Por ejemplo, si queremos que nuestro LED parpadee cada dos segundos, podemos utilizar la función delay() para pausar el código por dos segundos antes de continuar con la siguiente instrucción que enciende el LED. Esta función es realmente útil para proyectos simples que no requieren de mucho procesamiento.
Sin embargo, hay un problema con la función delay(): cuando la ejecución del programa se detiene debido al delay(), el microcontrolador no puede hacer nada más. Es decir, si estamos esperando que un led parpadee durante 2 segundos, durante esos dos segundos no podremos leer entradas, procesar datos, ni ejecutar otras tareas. En proyectos más complejos, este contratiempo puede llevar a un mal funcionamiento del sistema.
¿Qué es la función millis()?
La función millis() es una función que devuelve el tiempo en milisegundos que ha transcurrido desde que el microcontrolador se inició. Con esto, se puede calcular el tiempo que ha pasado entre dos momentos del programa para poder continuar con otras tareas. A diferencia de la función delay(), la función millis() no bloquea la ejecución del código, permitiendo al microcontrolador realizar otras tareas mientras que espera.
Utilizando la función millis() para medir el tiempo, se puede hacer que el microcontrolador realice más de una tarea a la vez, lo que normalmente se conoce como multitasking o tareas múltiples. Esto es realmente útil en proyectos complejos, donde necesitamos que el microcontrolador realice varias tareas simultáneamente.
¿Cuándo utilizar millis() en lugar de delay()?
La función millis() es ideal para proyectos que necesitan realizar diferentes tareas de forma concurrente, mientras que la función delay() es adecuada para proyectos más simples que no requieren de multitarea. Si se necesitan realizar operaciones de entrada y salida mientras se espera el tiempo, o se necesita controlar de forma más precisa el tiempo que transcurre, entonces la función millis() es la mejor opción.
Ejemplos de uso:
- Encender un LED durante 5 segundos utilizando la función delay():
digitalWrite(LED, HIGH);
delay(5000);
digitalWrite(LED, LOW); - Encender un LED durante 5 segundos utilizando la función millis():
unsigned long tiempoActual = millis();
unsigned long tiempoAnterior = tiempoActual;
while ((tiempoActual - tiempoAnterior) <= 5000){ digitalWrite(LED, HIGH); tiempoActual = millis(); } digitalWrite(LED, LOW);
Conclusión
El uso adecuado de la función delay() y millis() puede hacer que nuestro proyecto sea más eficiente y optimizado, dependiendo del tipo de tarea que se necesite realizar. Si se requiere multitarea o se desea realizar operaciones de entrada y salida mientras se espera, entonces la función millis() es la mejor opción. Por otro lado, si se necesita un retardo simple en la ejecución del código, la función delay() puede ser una opción adecuada. Por lo tanto, es importante conocer las diferencias entre estas dos funciones y elegir la apropiada según las necesidades de nuestro proyecto.
La función delay() se debe utilizar en proyectos simples donde no se necesita realizar multitarea y solo se desea un retardo simple en la ejecución del código. La función millis() se debe utilizar en proyectos más complejos donde se requiere realizar multitarea o se necesita realizar operaciones de entrada y salida mientras se espera. La función millis() se implementa utilizando una cuenta interna del microcontrolador que se incrementa cada milisegundo.¿Cuándo debo usar delay()?
¿Cuándo debo usar millis()?
¿Cómo se implementa la función millis()?
Deja una respuesta