
Ok, como les había dicho hace unos días, tengo preparados 5 pequeños proyectos para hacer principalmente con 6 LEDs y un Arduino y algunos otros componentes más. Como les había dicho ya también, yo de electrónica se únicamente lo básico, así que estos proyectos están enfocados más a bien a la programación.
¿Qué vamos a hacer?
En proramación hay dos conceptos que son muy sencillos, pero que al principio cuesta un poco de trabajo entender qué hacen realmente: los ciclos y las matrices. Me imagino que si a mí me hubieran explicado los ciclos y las matrices con un circuito como el que vamos a hacer los hubiera entendido mucho más rápidamente, además de que hubieran despertado mi imaginación y curiosidad por todo esto de la electrónica.
Imagínense que tienen un archivero (como estos) con cuatro cajones, cada cajón tiene una pequeña etiqueta con un número (1, 2, 3 y 4). Ustedes pueden usar sus cuatro cajones como quieran, pueden meterle algo, dejarlos vacíos, usar solo dos, etc. Imagínense también que tienen un ayudante que se va a encargar de traerte lo que sea que hallas guardado en el archivero. Ahora supongan que guardaron en el cajón número 3 un foco y quieren que su ayudante se los traiga, si le dicen “tráeme el foco” no les va a entender porque él no sabe que hay en los cajones, pero si le dicen “tráeme el contenido del cajón 3″ él va ir y les va a traer el foco. Ahora supongan que tienen un foco en cada cajón, para que su ayudante les traiga los cuatro focos tienen que decirle “tráeme el contenido del cajón 1″, luego “tráeme el contenido del cajón 2″, luego “tráeme el contenido del cajón 3″ y por último “tráeme el contenido del cajón 4″. O bien pueden decirle “tráeme el contenido de los cajones del 1 a 4″.
Así que en esta analogía ustedes son ustedes, el archivero es una matriz, las etiquetas que hay en cada cajón son los índices de la matriz, su ayudante es el compilador, y las instrucciones que le dan a su ayudante es el programa. La última instrucción (“tráeme el contenido de los cajones 1 a 4“) es un ciclo.
¿Todo bien? Entonces lo que vamos a hacer es poner 6 LEDs en una matriz y prenderlos de uno por uno con un ciclo. Como si le dijeramos a nuestro ayudante “prende y apaga el contenido de los cajones de 1 al 6″. Además nuestro ayudante va a poder detectar la velocidad a la que queremos que lo haga (con un potenciómetro). Ya estando claros, vamos a ver que vamos a necesitar.
Material
- Un Arduino o compatible.
- Un protoboard.
- 6 LEDs.
- Una resistencia de 1k ohm (o parecidona).
- Un potenciómetro de 10k ohms (o cualquier tamaño funciona bien).
- Unos buenos pedazos de cable de un solo hilo (hook-up wire).
Lo primero es armar el circuito en el protoboard. Para los LEDs se trata de poner todas sus tierras juntas, de ahí a la resistencia y luego a la tierra del arduino, luego el positivo del primer LED va al digital pin 7, el segundo al 8, el tercero al 9, etc. Para el potenciómetro se trata de poner sus dos pines de los extremos uno a tierra y otro a 5v y el del centro al analog in 0. Pero para no reburujarlos mejor vean esta imágen que hice con la ayuda de Fritzing.
E incluso también te genera el esquema, en el que se ve mucho más claramente lo que dije en el párrafo anterior.
Ya sólamente queda mostrarles el programa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | int led[6], pot = 0; void setup() { for(int n=0; n<6; n++) { led[n] = n+7; pinMode(led[n], OUTPUT); } } void loop() { int thespeed = analogRead(pot); for(int n=0; n < 6; n++) { digitalWrite(led[n], HIGH); delay(thespeed/2); digitalWrite(led[n], LOW); delay(thespeed/2); } } |
Antes que nada les recomendaría, si es que nunca han programado un Arduino, que leyeran estos links desde su página oficial: Bare Minimum, pinMode, analogRead, digitalWrite y delay.
Así que en la línea 1, declaramos una matriz de 6 elementos llamada ‘led’. También declaramos una variable llamada ‘pot’ igualada a cero, con esto queremos decir que nuestro potenciómetro estará conectado al analog pin 0.
Dentro del setup tenemos nuestro primer ciclo (for(int n=0; n<6; n++)), con esto le decimos al compilador que todas las instrucciones dentro de las llaves se repetirán hasta que ‘n’ deje de ser menor que 6, comenzando desde cero e incrementándose en 1 en cada repetición. Y si la instrucción que hay dentro del for es led[n] = n+7, pues esta instrucción se va a repetir 6 veces y cada vez ‘n’ va a valer 1 más, por lo que nuestra matriz se va a llenar con los números del 7 al 12, que son los pines en los que están conectados los LEDs.
En el segundo ciclo podemos aplicar la misma lógica, las instrucciones dentro del ciclo for se repiten 6 veces y ‘n’ se aumenta en uno por cada repetición, por lo que la primera vez: prendemos el led[0] (que vale 7) , esperamos, apagamos el led[0], esperamos; luego prendemos el led[1], etc, etc.
Así que ya tenemos algo parecido al GIF que usan algunos navegadores para mostrar que una web se está cargando, pero con LEDs y velocidad variable, todo controlado por un Arduino, ¿qué tal eh?.
Have fun!


Hola muy bueno lo explicas mejor ke otras paginas, no tienes algun proyecto mas laborioso ke pueda desarrollar en mi tiempo libre?? :D
Hola, gracias. Pues complicado, complicado, pues no jeje. Pero tengo algunos otros pequeños proyectos en camino.