sábado, 27 de diciembre de 2014

Arduino: Efecto coche fantástico


Buenas!!!
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++){}

La primera parte es el valor inicial del ciclo.

La segunda es la condición en la que terminara el bucle y se relaciona con la primer valor directamente.

Y la tercera indica como serán manipulados los datos



Todo lo que pongamos entre el corchete 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++);


 


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 el código

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
		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