Cómo parpadear sin usar la función de retraso en Arduino

Cómo parpadear sin usar la función de retraso en Arduino
Blink sin demora () es el proyecto Arduino más simple para una mejor comprensión de los principiantes y en Arduino, existe una función incorporada de demora () que genera un retraso de un tiempo específico (en milisegundos). Entonces, ¿por qué es necesario hacer un proyecto de LED parpadeantes sin una función de demora ()?? En este artículo, intentaremos descubrir la respuesta a esta pregunta y discutiremos el método por el cual podemos parpadear sin usar la función de retraso () en Arduino.

¿Por qué necesitamos parpadear sin usar la función de demora () en Arduino?

La función de retraso () produce un retraso de un tiempo definido en la ejecución de declaraciones o podemos decir que la función de retraso () detiene todo el programa y no se ejecutará ninguna declaración hasta que el retraso () no llegue a su fin.

Significa que no podemos hacer ninguna otra tarea hasta que la demora no se complete, esta es la principal preocupación por la que a veces se desaconseja usar la función de retraso (). Consideremos el ejemplo de un hombre de mensajería, va a la casa y no encuentra a nadie en el hogar, dijeron los vecinos, la persona preocupada volverá a su casa en una hora. Ahora, ¿qué debería hacer el hombre de mensajería?? O puede esperar o entregar las parcelas de los clientes vecinos y regresar después de una hora para entregar el paquete de esa persona.

Del mismo modo, en la programación no recomendamos usar la función de retraso () y detener todo el programa durante algún tiempo, en lugar de eso preferimos realizar alguna otra tarea mientras el LED parpadea.

Parpadea sin usar el código de función de demora () en Arduino

En Arduino, podemos parpadear LED sin usar la función de retraso () mediante un código muy simple. Antes de pasar por el código, explicemos el propósito de algunas funciones incorporadas que se están utilizando en el código:

Funciones Objetivo
PinMode () Esta función se usa para definir el PIN específico para actuar como una salida o entrada
DigitalWrite () Esta función se utiliza para configurar el pin de acuerdo con los estados altos o bajos
De serie.comenzar() Esta función se utiliza para la comunicación en serie
milis () Esta función se utiliza para extraer el tiempo de ejecución del código en milisegundos

Considere el siguiente código:

int led = 13;
int x = 1;
Unsigned Long D1, D2;
setup () void
PinMode (LED, salida);
DigitalWrite (LED, 1);
De serie.comenzar (9600);

bucle void ()
d2 = Millis ();
if (d2-d1> = 1000)
x = 1-x;
d1 = Millis ();
DigitalWrite (LED, x);

La explicación del código anterior es:

  • Hemos definido una variable "x" con un tipo de datos enteros y se utilizará para cambiar el estado del LED.
  • También definimos un LED variable con un tipo de datos enteros y almacenamos 13 en él. Este 13 se utilizará para el trece Number Pin de Arduino.
  • Dos variables D1 y D2 se definen con el tipo de datos largos sin firmar. El tipo de datos "sin firmar largo" se utiliza para almacenar 32 bits de número y puede almacenar hasta 4,294,967,295 números y lo que debe ser necesario para saber es que este tipo de datos no almacena números negativos en él en él.
  • En la configuración void (), primero, usamos la función pinmode () y declaramos el pin 13 como un pin de salida.
  • A continuación, utilizamos la función DigitalWrite () para hacer que el estado del pin 13 sea alto.
  • Por último, utilizamos la comunicación en serie a una velocidad de baudios de 9600.
  • En el bucle void (), escribimos el código de parpadeo de LED porque queremos repetirlo durante un período de tiempo infinito.
  • Extraemos el tiempo de ejecución del código hasta ahora y almacenamos el valor en la variable D2.
  • Luego, usando la instrucción if, verificamos la condición si (D2-D1> 1000), si es verdadero, cambiará el valor de x.
  • Luego almacenamos el otro valor de ejecución del código en D1.
  • Por último, el uso de la función digitalwrite (), cambió el estado del LED usando el valor de x.
  • Esto continuará por un tiempo infinito (porque el valor de D2-D1 no será mayor de 1000 en ningún caso).

Simulación

Ejecutaremos este código en la simulación de Proteus, abriremos el Proteus y encontraremos los siguientes componentes:

  1. Arduino Uno R3
  2. CONDUJO
  3. Resistor
  4. Suelo

Conecte el un terminal de la resistencia con el pin 13 de Arduino, conecta el terminal positivo del LED con el otro terminal de la resistencia y conecta la tierra con el terminal negativo del LED. Una vez que se complete el circuito, haga doble clic en Arduino y cargue un archivo "hexadecimal" del código Arduino en él.

Juega el proyecto y el LED comenzará a parpadear como se muestra a continuación:

Configuración de hardware

El mismo circuito que se simula en el proteus se ensamblará en la placa de pan. Utilizamos cables de puente para conectar los componentes que son LED, Arduino y resistencia:

El cable de puente negro está conectado al suelo del Arduino y al terminal negativo del LED. Luego, una resistencia (220 ohmios) está conectada al terminal positivo del LED y otra pierna de la resistencia (220 ohmios) está conectada al pin 13 de Arduino usando el cable de puente rojo. El código ya está cargado en el Arduino, el funcionamiento del proyecto es:

El LED está parpadeando con éxito sin usar la función de retraso ().

Conclusión

La función Blink sin demora () en Arduino es el proyecto de nivel para principiantes que se utiliza para demostrar cómo se puede ejecutar el proyecto sin usar la función de retraso (). Sin usar la función de retraso (), no estamos restringidos a una sola tarea y podemos ejecutar cualquier otra instrucción del código. En este artículo, hemos explicado la función LED de Blink sin demora () en Arduino con la ayuda de una demostración de su simulación, así como su configuración de hardware.