Arduino millis() vs delay()

Arduino millis() vs delay()

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.

📋 Aquí podrás encontrar✍
  1. ¿Qué es la función delay()?
  2. ¿Qué es la función millis()?
  3. ¿Cuándo utilizar millis() en lugar de delay()?
  4. Ejemplos de uso:
  5. Conclusión
    1. ¿Cuándo debo usar delay()?
    2. ¿Cuándo debo usar millis()?
    3. ¿Cómo se implementa la función millis()?

¿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.

Preguntas frecuentes

¿Cuándo debo usar delay()?

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.

¿Cuándo debo usar millis()?

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.

¿Cómo se implementa la función millis()?

La función millis() se implementa utilizando una cuenta interna del microcontrolador que se incrementa cada milisegundo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir