Los bucles se utilizan para controlar el flujo de datos en un programa en Arduino. En un bucle, un bloque de código se ejecuta una y otra vez, mientras se cumplan ciertas condiciones.
Cada ciclo de un bucle se le llama iteración.
Para entrar en la sección del código dentro de un bucle en la programación de Arduino, ciertos parámetros deben ser verdaderos, de esta forma se puede controlar si el programa entra o no dentro de un bucle.
Todos los códigos hechos para Arduino poseen al menos un bucle. A este bucle se le llama bucle principal o void loop()
. Sin embargo utilizar otros bucles dentro de nuestro código nos puede ser muy útil.
En esta nueva sección, conoceremos los bucles más utilizados dentro de la programación de Arduino, como lo son el bucle while, do while y los bucles for.
Aprenderás los casos donde se deben usar cada uno de estos bucles en un programa Arduino, a través de un sencillo proyecto que permite que parpadee un LED solo cuando se presiona un pulsador.
Bucles While en Arduino
El código para un bucle while en Arduino tiene la siguiente sintaxis:
while(condición){
Código;
}
Mientras la condición sea verdadera, se ejecutará el código dentro del cuerpo del ciclo while y se seguirá ejecutando el bucle mientras la condición lo siga siendo.
En caso contrario, si la condición es falsa, se omitirá el ciclo while y se pasará a la siguiente línea del código.
En el siguiente ejemplo aprenderás a utilizar un ciclo while para un circuito que hará que un LED parpadee mientras se presiona un pulsador.
Siga este diagrama de cableado para conectar el circuito:

Una vez conectado el circuito anterior, escribe este código en tu Arduino:
int buttonPin = 7;
int ledPin = 11;
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
}
void loop() {
int buttonState = digitalRead(buttonPin);
while (buttonState == LOW) {
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
}
}
Primero declaramos una variable pin para el pin conectado al botón llamado buttonPin
y una variable pin para el pin conectado al LED llamado ledPin
.
En el setup()
sección, definimos el buttonPin
como entrada con la resistencia pull-up interna. Luego configuramos el ledPin
como salida.
Dentro de nuestro loop()
, declaramos una variable llamada buttonState
y la igualamos a digitalRead(buttonPin)
.
Esto leerá el estado de voltaje detectado en el buttonPin
(pin 7) y almacenará el resultado en la variable buttonState
.
Se va a ejecutar el código dentro de nuestro ciclo while cuando se presione el pulsador. Al presionar el pulsador, se tira del pin 7 hacia abajo. Entonces la condición es buttonState == LOW
. Cuando se presiona el pulsador, buttonState
será igual a LOW, lo que hace que la condición sea verdadera.
Entonces, Arduino ingresará al ciclo while y ejecutará el código del cuerpo hasta que la condición se vuelva falsa. La condición sólo será falsa si buttonState
es HIGH, por lo que mientras se presione el botón, el LED seguirá parpadeando.
Bucle Do while en Arduino
Los bucles do while en Arduino funcionan igual que los bucles while normales. Pero en este caso, el código del cuerpo se ejecuta antes de que se pruebe la condición.
Partiendo de la anterior afirmación, incluso si la condición es falsa, el código se ejecutará al menos una vez, antes de verificar la condición.
La sintaxis para un ciclo do while en Arduino es así:
do {
código;
} while(condición);
Como puedes ver se ejecuta el código que sigue a do. Luego va a la instrucción while y evalúa la condición. Si la condición es falsa, el Arduino continuará no entrará en el bucle y seguirá con las siguientes líneas del código.
Sin embargo si la condición es verdadera, el código del cuerpo se ejecutará una y otra vez hasta que la condición se vuelva falsa.
Bucles For en Arduino
Los bucles for se utilizan con frecuencia para incrementar y decrementar contadores, o para inicializar una gran cantidad de pines al mismo tiempo.
Los bucles for evalúan un conjunto de tres parámetros: el valor de inicialización, la condición y la iteración:
for(Inicio; condición; iteración) {
código;
}
El valor de inicio define una variable de control de bucle, generalmente llamada i
Dónde j
. La condición determina cuándo el programa saldrá del bucle for.
El valor de iteración define cómo se incrementa o disminuye la variable de control del bucle en cada iteración.
Una aplicación útil de bucles for es inicializar varios pines al mismo tiempo.
El siguiente código puede usarse para configurar los pines del 0-9 de un Arduino como salidas:
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
}
Usando un bucle for, puede hacer lo mismo con solo tres líneas de código:
void setup(){
for(i=0; i<10; i++) {
pinMode(i, OUTPUT);
}
}
Aquí declaramos una variable de control de bucle llamada i
y la inicializamos en cero. La variable de control de bucle contiene el número de bucles, que aumentará en uno, con cada iteración en el bucle.
A continuación, definimos la condición. El bucle for continuará mientras la condición sea verdadera. En este caso, la condición es el número de pines que queremos inicializar. Cada pin del cero al nueve se definirá como una salida (10 pines), por lo que la condición es i < 10
.
Queremos la variable de control de bucle. i
para aumentar en uno cada vez en el bucle, por lo que usamos i++
por el valor de la iteración.
En la primera iteración del ciclo, i
se pondrá a cero. Cero es menor que diez, por lo que la condición es verdadera y se ejecutará el código. En el pinMode()
función, el primer parámetro suele ser el número de pin que queremos inicializar. Pero podemos usar la variable de control de bucle i
en su lugar, el pin cero digital se establecerá como una salida.
La próxima vez en el bucle, el valor de iteración i++
aumentará la variable de control del bucle en uno. Entonces i
ahora será igual a uno. Uno siempre es menor que diez, por lo que el Arduino entra en el cuerpo del bucle for. Desde i
es igual a uno ahora, el pin uno se establecerá como salida.
El ciclo for continuará iterando, aumentando i
por uno cada vez hasta i
ya no es menos de diez. Cuando i
es diez, la condición se vuelve falsa y el Arduino sale del ciclo for para continuar con el resto del programa.
Palabra reservada BREAK
La palabra reservada break dentro de un bucle, obliga al programa a salir del ciclo inmediatamente. Funciona con bucles while, bucles do-while y bucles for. Es solo otra forma de controlar el comportamiento de un ciclo.
Por ejemplo, puede usar break para salir del ciclo cuando ocurre un evento específico:
for(i=0; i<10; i++) {
if(x == 3){
break;
}
Serial.print("Hello");
}
Serial.print("Goodbye");
En este ejemplo, break;
se coloca dentro de una sentencia if. Ya sea x
es igual a tres, el Arduino el código dentro del if y ejecutará el comando break. Esto hará que se salga del código del bucle for, por lo que «Hola» no se imprimirá en el monitor serie. En este caso al ser Serial.print("Adios");
y éste estar fuera del bucle for, la palabra «Adiós» se imprimirá en pantalla.
Palabra reservada Continue
La palabra reservada continue permite aún más control sobre la ejecución de los bucles.
Continue hace que la ejecución del código se detenga en medio de las iteraciones actuales del ciclo y comience en uno nuevo.
for(i=0; i<10; i++) {
if(x == 3){
continue;
}
Serial.print("Hola");
}
Para x
distinto a 3, «Hola» se mostrará una vez por cada iteración del bucle for anterior.
Sin embargo cuando x
se vuelve igual a tres, el Arduino ingresará al código dentro del if donde tenemos la palabra reservada Continue.
El comando Continue hará que Arduino detenga la iteración actual del ciclo for y comience un nuevo ciclo.
Con el comando continue, el código no sale del ciclo for, simplemente salta al inicio de la siguiente iteración.
La variable de control de bucle conserva su valor, por lo que la cuenta no se pierde. La palabra reservada continue es una forma de acortar una iteración de un bucle cuando ocurre un evento determinado.
Esperamos que este sencillo tutorial te haya mostrado de forma sencilla el uso de los bucles en la programación de Arduino.
Muy bueno tendre que sacar mucho provecho de la valiosa información, gracias compañeros
Nos da gusto que te sirva la información, saludos