Ejemplo 1_2
En esta entrada quiero explicar un tipo de
bucle muy típico en programación. Se trata del bucle
for.
Este tipo de recurso se usa cuando queremos
repetir n número de veces un evento dentro del programa.
Repetirlo a base de copiar el mismo código n
veces cómo el día anterior tiene varios inconvenientes:
-
Es muy pesado, efectivamente, y
aunque uses el clásico copiar y pegar,
-
También es ineficiente desde un
punto de vista de programación, puesto que hace el código más largo, y la
memoria de nuestro Arduino está muy limitada.
¿Cómo quedaría la secuencia de encendido,
nuestro void loop, con este recurso?
Primero un vistazo al código anterior:
void loop()
{
digitalWrite(2,HIGH);
delay(d);
digitalWrite(2,LOW);
digitalWrite(3,HIGH);
delay(d);
digitalWrite(3,LOW);
digitalWrite(4,HIGH);
delay(d);
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
delay(d);
digitalWrite(5,LOW);
}
Y ahora usando el for, el ejemplo completo:
//Ejemplo1.2 versión para
explicar el uso del for para realizar procesos repetitivos
//sobre el ejemplo anterior de "la ola ". La declaración de entradas y salidas es la misma
//el cambio será a la hora de encenderlas que lo haremos usando la instrucción for
int d=1000;
// constante de tipo integer, que define el tiempo de delay
void setup()
{
pinMode(2,OUTPUT);
//Pin 2 conectado al led 1, definido como salida
pinMode(3,OUTPUT);
//Pin 3 conectado al led 2, definido como salida
pinMode(4,OUTPUT);
//Pin 4 conectado al led 5, definido como salida
pinMode(5,OUTPUT);
//etc...
}
Void loop()
{
For ( int a =
2; a < 6; a++)
{
digitalWrite(a,HIGH);
delay (d);
digitalWrite(a,LOW);
delay (d);
}
}
Analicemos el bucle:
for (
int a = 2; a < 6 ; a++ )
{
digitalWrite(a,
HIGH);
delay(d);
digitalWrite(a,
LOW);
delay(d);
}
}
Detrás de la instrucción for, entre paréntesis
expresamos las condiciones del bucle.
Primero definimos una variable, a,
y le asignamos un valor inicial. Seguidamente le decimos cual es la condición
que debe cumplir esa variable para salir del bucle, que sea más pequeña que 6, y cuanto tiene que incrementar en cada
repetición, en este caso contar de 1 en 1, a++.
Después entre corchetes se encuentra las
acciones que se realizarán todas las veces que se ejecute el bucle. Cómo
tenemos los leds conectados entre los pines 2 y 6 lo que hacemos es dar una
variable, el valor inicial de 2 e ir incrementándolo hasta llegar al último.
Este código es equivalente al anterior, pero se aprecia rápidamente que
incrementar el nº de leds es muchísimo más sencillo. También observamos que
incrementar el número de salidas no incrementa la longitud del código.
El ejemplo para descarga, lo tienes en el enlace. Como siempre, intenta teclearlo tú:
Ejercicio 1.2 de arduino práctico
El ejemplo para descarga, lo tienes en el enlace. Como siempre, intenta teclearlo tú:
Ejercicio 1.2 de arduino práctico
Los bucles también se pueden definir para realizar una cuenta regresiva. En ese caso utilizaremos el valor a--. En nuestro ejemplo, el bucle podría quedar de la siguiente manera:
for (
int a = 6; a < 2 ; a-- )
{
digitalWrite(a,
HIGH);
delay(d);
digitalWrite(a,
LOW);
delay(d);
}
}
Esta versión la tienes disponible en el siguiente enlace:
Ejercicio 1.2b de Arduino práctico
En este caso, los leds describirían la secuencia en sentido inverso, y con la sentencia a— en cada paso restaremos 1, hasta llegar a 2.
Esta versión la tienes disponible en el siguiente enlace:
Ejercicio 1.2b de Arduino práctico
En este caso, los leds describirían la secuencia en sentido inverso, y con la sentencia a— en cada paso restaremos 1, hasta llegar a 2.
Pincha en el video para apreciar la diferencia:
No hay comentarios:
Publicar un comentario