![](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7ZH0n0W3h0RVANpa9NlkE_WTRrnAddV_1UXwMYdba_87HCGXtYreRXFAcu25SOzT6JAMxTM5Ev4SlXZaNXFbONApPbtB5KHlxCY1WgdBi8FBTJ_lYQ_CinEwewjkANffM6qVAdSnGuGkl/w166-h110/logo-arduino.jpg)
Buenas a todos! hoy nos ponemos nostalgicos.. Quien no recuerda esa fantástica serie de los 80's llamada "El coche fantástico"?
Un coche con inteligencia artificial que hablaba y que en capo brillaban unos flamantes leds rojos. Con Arduino no conseguiremos que nuestro coche piense por si solo o hable, lo que si podremos hacer es ese efecto de luces que tanto nos gustaba.
En estos ejemplos nos centraremos en hacer unas cuantas secuencias con leds, son ejemplos sencillos, pero nos ayudaran a comprender los ciclos for.
En los ciclos for las tres partes de las que se compone for están separadas por punto y coma ( ; ).
for (n=5; n < 9; n++){}
- n=5; Es el valor inicial del ciclo. El valor puede ser positivo o negativo
- n < 9; Es la condición en la que terminara el bucle y se relaciona con el primer valor directamente. en este caso "menor que".
- n++ Indica como serán manipulados los datos
Todo lo que pongamos entre los corchetes {} se repetirá hasta que la primera y la segunda parte coincidan, es decir, hasta que "n" llegue a 8, entonces terminara con el bucle y seguirá con el programa. Con esto hemos conseguido que "n" haya tenido los valores 5, 6, 7 y 8.
// Inicia código
int tiempo= 300; // Tiempo es una variabe int con valor 300
int n; // n es una variable int
void setup(){
for (n= 5; n < 9; n++);
El programa se puede interrumpir si dentro del bucle añadimo un break:
break;
Después de este primer ejemplo, vamos al ejercicio al que hace referencia el titulo de este post.
Hasta ahora hemos hecho una secuencia en un solo sentido, para hacer la secuencia del coche fantástico tenemos que hacer que los puertos se desplacen tanto hacia arriba como hacia abajo.
Para ello hacemos el ciclo for añada un bit (++) o lo quite (--).
También como hacer un array donde se almacenaran los números de los leds que vamos a encender.
Veamos como actúa en el siguiente código:
// Inicia código luces coche fantástico
int leds[] = {5,6,7,8,9,10,11}; // Crea un array de los pines de 5 al 11 dentro de la variable led
int n = 0; // Crea una variable llamada “n” y le asigna un valor de 0
int tiempo = 30; // Crea una variable llamada tiempo y le asigna un valor de 30
void setup() { // Comienza la configuración
for (n = 0; n < 7 ;n--) { // Repite el bucle encerrado entre las llaves
pinMode(n, OUTPUT); // Indicamos que los pines son de salida
}
void loop(){
for (n = 0; n < 7 ;n--) { // Repite el bucle encerrado entre las llaves
digitalWrite (leds[n],HIGH); // Enciende el led almacenado en array en sentido contrario
delay(tiempo); // Hace una pausa de 30 ms
digitalWrite (leds[n-1],HIGH); // Enciende el led anterior
delay(tiempo); // Hace una pausa de 30 ms
digitalWrite (leds[n],LOW); // Apaga el led anterior a [n-1]
delay(tiempo*2); // Pausa de 60ms
}
}
Como veis es algo muy sencillo que nos ayudara a comprender mejor como utilizar los bucles for.
Esto se puede utilizar para casi cualquier repetición, Por ejemplo si quisiéramos que un led parpadeara medio segundo encendido y medio segundo apagado durante 60 repeticiones, tendríamos un segundero para un reloj.
Un saludo y gracias por visitar www.infotronikblog.com
No hay comentarios :
Publicar un comentario