Uso de millis en arduino

Uso de millis en arduino

Uso de millis en arduino

Millis arduino ejemplo

La función de retardo para la programación de Arduino es una pieza de código notable, y hay lugares en los que es necesario utilizarla. Sin embargo, la mayoría de las veces, la función de retardo se utiliza donde no debería. En este post, vamos a echar un vistazo en profundidad al uso de delay, y mostrarte cómo puedes sustituirlo por una forma diferente de cronometrar los eventos de Arduino utilizando la función millis().

A continuación se muestra un código simple de Arduino del tutorial ‘Blink’. Hay dos secciones principales, la configuración y el bucle. La configuración se ejecuta cuando el Arduino se enciende, y el bucle se repite continuamente. Cuando todo el código dentro del bucle se ha ejecutado, entonces comienza en la parte superior de la sección de bucle de nuevo.

El código dentro del bucle puede ser simple o complejo, pero siempre hace un bucle. Y estos bucles ocurren muy rápidamente. Ahora que entiendes cómo funciona el código de Arduino, podemos hablar más sobre el uso de millis() y no de delay().

Supongo que la primera pregunta que probablemente tengas es «¿Por qué? ¿Por qué debería usar millis() en lugar de delay()? Esa es una gran pregunta, y entenderla te dará una mejor idea de cuándo puedes usar delay() y cuándo sería mejor usar millis().

Temporizador arduino

En este tutorial, voy a hablar de la función millis en Arduino, cómo funciona, cuáles son sus beneficios y, finalmente, cómo podemos utilizar la función Millis de Arduino de manera eficiente para introducir el concepto de multitarea en Arduino.

Puede que estés familiarizado con la función delay() en el entorno Arduino. Desde el día en que se empieza con Arduino, delay es una de las primeras funciones con las que te encuentras. Es una función sencilla que está asociada a la temporización.

Cuando se llama a la función delay con un valor, Arduino entra en un estado de ocupación y suspende toda la actividad hasta que se termine ese tiempo. Durante este estado, es decir, durante la ejecución de la función de retardo, Arduino no puede realizar ninguna otra tarea, como leer un botón, por ejemplo.

NOTA: Este es de hecho el principal código de retardo que utilizo en mis proyectos de microcontroladores 8051. La combinación de 250 y 248 en los bucles for toma aproximadamente 1millisegundo del tiempo de ejecución del controlador. Si ejecuto este bucle durante 1000 veces, obtengo un retardo de aproximadamente 1000ms o 1 segundo.

Millis()

Una posible solución a los problemas generados por el uso de la función delay() es utilizar la función millis(). Desde el primer uso del Arduino, la función delay() se utiliza para gestionar las instrucciones en función del tiempo. El mayor problema de la función delay() es que bloquea la ejecución de la secuencia de código. Esto se vuelve muy limitante cuando se trabaja con varios componentes (gestión de varios LEDs o sensores). Veremos en este tutorial cómo utilizar la función millis() para sustituir a la función delay().

La función millis() no toma parámetros y devuelve un valor que representa el número de milisegundos que han transcurrido desde que el Arduino se encendió. El valor es unsigned long (4-bytes o 32-bits). El valor máximo que puede tomar es 4.294.967.295 o 49 días.

En los primeros ejemplos de Arduino, la función delay() se utiliza para ejecutar un bloque de código periódicamente pero no es una función propia ya que bloquea la ejecución del código. La función millis() es mucho más adecuada para esta función.

Millis arduino delay

Los microcontroladores Arduino son una plataforma de bajo coste y fácil de usar para la electrónica y la programación. Son geniales para tareas de control sencillas como el parpadeo de un LED, pero ¿hasta dónde podemos estirar el potencial de un solo Arduino? En otras palabras, ¿es posible la multitarea con Arduino? Si has aprendido algo de programación básica con Arduino y quieres pasar al siguiente nivel, este artículo es definitivamente para ti.

Antes de entrar en la multitarea adecuada de Arduino, tenemos que hablar de los diferentes métodos para mantener el tiempo, empezando por la muy popular función delay(). Echemos primero un vistazo a la definición de la función desde la documentación oficial de Arduino.

Una advertencia desafortunada de la función delay() es que es un retardo de bloqueo. Permítame explicarlo. Durante la duración de una llamada a la función delay(), la CPU de nuestro Arduino se mantiene ocupada. Esto significa que no puede responder a las entradas de los sensores, ni realizar ningún cálculo, ni enviar ninguna salida.

Para explicar mejor las implicaciones de este comportamiento, veamos un ejemplo. Tomando el ejemplo del parpadeo de la misma página, nuestro código Arduino para hacer parpadear un LED a intervalos regulares con el uso de la función delay() podría tener este aspecto.

Acerca del autor

admin

Ver todos los artículos