Cómo detener la función de bucle nulo en Arduino

Cómo detener la función de bucle nulo en Arduino
Arduino es una plataforma de programación que permite a los usuarios comunicarse con microcontroladores que no eran posibles hace unos años. Los tableros Arduino se pueden programar utilizando Arduino IDE. Arduino IDE utiliza un lenguaje C/C ++ con alguna funcionalidad adicional para controlar y programar tableros Arduino. El boceto Arduino consta principalmente de dos funciones, una está configurada y el segundo es Loop. Aquí entenderemos cómo podemos controlar el bucle utilizando diferentes técnicas de programación.

Cómo detener el bucle vacío en Arduino?

Los bocetos Arduino consisten principalmente en dos partes, una está configurada y el segundo es el bucle. Las funciones de configuración solo se ejecutan una vez después de que el código se compile, mientras que la función de bucle se mantiene funcionando hasta que un nuevo boceto o Arduino pierde su potencia.

Múltiples proyectos pueden exigir funciones de bucle vacío para que se ejecuten durante un tiempo específico o parar después de realizar ciertas instrucciones, por lo que ahora veremos cómo podemos detener la función de bucle void de Arduino utilizando diferentes técnicas de programación.

¿La función de bucle realmente se detiene??

Arduino no proporciona ninguna forma de detener la función de bucle vacío. Además de Arduino, no existe tal cosa en los microcontroladores en primer lugar. Técnicamente, todas las técnicas que utilizamos son solo para detener la funcionalidad de bucle Arduino. No se detiene por completo, enviamos bucle vacío a una condición infinita usando mientras o usar un salida declaración para detener su proceso. Al hacer este bucle Arduino atascado dentro de un bucle infinito sin ejecutar instrucciones, la única forma de recuperarlo es reiniciando; a través de un botón o cargando un nuevo boceto. Así que técnicamente el bucle de voides arduino no se detiene.

Métodos para detener el bucle vacío en Arduino

La programación de Arduino tiene dos tipos de bucles uno que es por defecto en Arduino Sketch, que es Void Loop (), mientras que el segundo es el bucle utilizado durante la programación o la redacción de un boceto. Los bucles creados por el usuario pueden dejar de usar fácilmente las declaraciones de descanso.

A continuación se mencionan algunos pasos para detener el bucle vacío en Arduino:

  • Usando Infinite While Loop
  • Usando la biblioteca del sueño
  • Uso de la declaración de salida (0)
  • Usando la declaración IF

I: Usando Infinite While Loop

Para detener el bucle vacío en Arduino, esbozar un bucle infinito se puede usar con la ayuda de una estructura de bucle de tiempo. Este método funcionará en todas las tablas de Arduino, pero esto no detendrá el funcionamiento de Arduino a medida que Arduino continúa consumiendo energía. Este método se puede implementar fácilmente en cualquier código después de la última línea donde termina su código.

Tomemos un ejemplo de LED Blink para comprender cómo el bucle While es útil para romper la función de bucle vacío:

setup () void
// Pon tu código de configuración aquí, para ejecutar una vez:
PinMode (LED_Builtin, salida);

bucle void ()
DigitalWrite (LED_Builtin, High); // encender el LED
retraso (1000); // retraso de un segundo
DigitalWrite (LED_Builtin, bajo); // Apague el LED
retraso (1000); // retraso de un segundo
while (1) // bucle infinito

En el código anterior, hemos inicializado el pin de LED incorporado en la función de configuración de vacío después de eso en la sección de bucle nulo se escribe un programa de parpadeo LED. Aquí el LED comenzará a parpadear en un patrón de un 1 segundo y 1 segundo. Después de completar un ciclo, un infinito mientras que el bucle se inicia al final del segundo retraso; Ahora el LED permanecerá apagado hasta que el código se vuelva a cargar o Arduino se restablezca.

II: Usando la biblioteca del sueño

En el método anterior, se detiene el bucle void de Arduino, pero Arduino continuará tomando energía. El siguiente método que detendrá permanentemente el bucle void y pondrá a Arduino en modo de suspensión está usando Sleep_n0m1 Biblioteca, el uso de esta CPU de Arduino se puede enviar en modo de suspensión permanente hasta que Arduino se restablezca o usamos un temporizador para el tiempo específico para el cual Arduino entra en modo de suspensión. Este método depende de bibliotecas que podrían no funcionar en algunos tableros de Arduino.

Nuevamente, tomaremos un ejemplo de LED para demostrar su trabajo.

#incluir
Dormir dormir;
Unsigned Long Off Time;
setup () void
tiempo apagado = 5000;
PinMode (LED_Builtin, salida);

bucle void ()
DigitalWrite (LED_Builtin, High); // encender el LED
retraso (1000); // retraso de 1 segundo
DigitalWrite (LED_Builtin, bajo); // Apague el LED
retraso (1000); // demora de 1 segundo
dormir.pWRODDMODE (); // establecer el modo de suspensión
dormir.SleepDelay (Offtime); // dormir para: fuera de tiempo

Al comienzo del boceto, hemos llamado a la Biblioteca del sueño de Arduino y definimos una variable fuera de tiempo Esta variable almacenará el límite de tiempo para el que queremos poner a Arduino en modo de suspensión. Aquí hemos tomado 5000 ms de tiempo apagado. Luego definimos un LED incorporado para Arduino.

En el código LED de la sección del bucle vacío se escribe, aquí LED completará un ciclo de parpadeo y luego se va al modo de suspensión durante 5000 ms o 5 segundos, después de que el LED nuevamente comenzará a un ciclo parpadeante y luego va al modo de suspensión durante 5 segundos. Este ciclo continúa hasta que Arduino se restablece.

En este ejemplo, el bucle se detendrá durante 5 segundos, después de lo cual se inicia nuevamente debido al conjunto de tiempo de apagado, pero si necesitamos detenerlo de forma permanente, tenemos que eliminar este temporizador o establecerlo en el valor máximo. La biblioteca del sueño puede detener la sección del bucle durante un máximo de 49 días después de lo cual se reiniciará automáticamente.

III: Uso de la declaración de salida (0)

El bucle vacío también se puede dejar de usar la instrucción EXIT (). Esta declaración es una de las formas más simples de detener una función de bucle vacío. Recuerde usar esta declaración al final de su código porque cualquier instrucción escrita después de esta línea no se ejecutará hasta que Arduino se restablezca o se vuelva a colocar el código.

setup () void
// Pon tu código de configuración aquí, para ejecutar una vez:
PinMode (LED_Builtin, salida);

bucle void ()
DigitalWrite (LED_Builtin, High); // encender el LED
retraso (1000); // demora de 1 segundo
DigitalWrite (LED_Builtin, bajo); // Apague el LED
retraso (1000); // demora de 1 segundo
salida (0);

El código anterior explica el uso de declaraciones de salida para detener el bucle vacío en el código Arduino. Al igual que el código LED de ejemplo anterior está escrito y al final del código hemos iniciado una línea de salida. Esto romperá el bucle de vacío Arduino. LED parpadeará para un ciclo después de eso se detendrá.

IV: Uso de la declaración IF

La declaración IF es el último método, discutiremos hoy para detener el bucle vacío. Si la Estado establecerá una condición dentro del bucle que reiniciará el bucle vacío o lo detendrá dependiendo de la entrada del usuario.

El siguiente código demuestra la Estado de IF con la ayuda de LED a STOP Void Loop.

parada booleana = verdadero;
setup () void
// Pon tu código de configuración aquí, para ejecutar una vez:
PinMode (LED_Builtin, salida);

bucle void ()
if (stop == true)
DigitalWrite (LED_Builtin, High); // encender el LED
retraso (1000); // demora de 1 segundo
DigitalWrite (LED_Builtin, bajo); // Apague el LED
retraso (1000); // demora de 1 segundo

parar = falso;

Al comienzo del código, hemos inicializado una variable booleana detener y su valor se establece en verdadero. Después de eso en la sección de configuración se definen los pines LED. En la sección del bucle nulo, las declaraciones comienzan y verifique la variable detener valor. Si la condición se hace realidad, iniciará el boceto LED Blink. Una vez que se completa el ciclo de parpadeo LED, asignamos el valor del detener variable a falso. Después de eso, seguirá revisando el bucle vacío, pero la declaración siempre se volverá falsa porque establecemos el valor del detener variable a falso, lo que resulta en detener el bucle vacío del código Arduino.

Conclusión

El bucle void es una parte importante del código Arduino, cualquier cosa escrita en su interior seguirá funcionando hasta que Arduino se restablezca. A veces necesitamos detener la sección del bucle de acuerdo con los parámetros del proyecto, por lo que aquí resaltamos todas las formas principales en el que podemos detener el código de la sección del bucle void de Arduino.