Cubo de LED 3x3x3 con Arduino UNO R3

de: Mrhofflich

Dificultad:

Intermedio

Plataforma:

Arduino

Categoria:

Hardware

Favoritos:

favorite4

reportReportar

Descripción:

Que mejor forma de ver los LEDs que en un perfecto arreglo cúbico, si, así es, este proyecto es un cubo de LEDs de 3x3x3. Es importante mencionar que para hacer este proyecto es altamente recomendable tener las bases de Arduino.

Licencia: GNU Affero General Public License v3.0


Tags:

arduino cube
cube
3x3x3
led cube

Componentes:

  • LED verdes 5 mm diffused x 27
  • Resistencias 220 Ohms x 9
  • Resistencias de 22 KOhms x 3
  • Transistores 2N23222 x 3
  • Jumper Wires x 20
  • Cable USB A-B x 1
  • Arduino UNO R3 x 1
  • Protos grandes ( Opcional) x 2
  • Protoshield (Opcional) x 1
  • Arduino IDE
  • Cautin x 1
  • Estaño con pasta integrada, o en su defecto pasta aparte. x 1
  • OPCIONAL Chupon para estaño. x 1
  • Pinzas de agarre x 1
  • Unos cables caimán x 1
  • Una hoja de Papel, un Lápiz, 1 regla y 1 cinta x 1
  • Un desarmador, u objeto para perforar la base. x 1

Paso 0:

No quiero adentrarme mucho en lo que es la teoria del funcionamiento del cubo, eso es tema de un artículo (¡spoiler alert! Lo haré pronto). En esta sección de proyectos, queremos que empieces a hacer cosas geniales en el menor tiempo posible. Al terminar este proyecto deberías tener algo parecido a esta imagen.




Lo primero que hay que hacer por sanidad mental, antes de cualquier cosa es probar que TODOS nuestros LEDs funcionen. Estoy seguro que no quisieran soldar todo para al final darse cuenta que un LED no funciona. Para hacer esto pueden probar cada LED usando una pila de reloj. En dado caso de que no tengan una a la mano, pueden hacer lo que yo hice, pueden cargar el sketch de "Blink" que está en nuestro IDE de Arduino.

Para cargar el programa hay que ir a Archivo -> Ejemplos -> Básicos -> Blink. Una vez que esté cargado el programa, verán el LED de Arduino flashando, eso quiere decir que el programa está arriba, ahora viene lo divertido. Hay que comenzar a probar los LEDs insertando en el PIN 13, la patitá más larga y en GND la patita más corta.

Paso 1:

La preparación


Una vez que ya esté comprobado que todos tus LEDs funcionen hay que proceder a la preparación de la base para soldar las matrices. Para eso en mi caso utilicé una vieja caja de base de laptop que me donó un amigo.

Después hay que pegarle la hoja de papel encima, y utilizando la regla hay que hacer el arreglo para ordenar los LEDs. La separación con la que marqué fue de 2.5 cms. Para terminar hay que utilizar una herramienta y hacer los hoyos donde marcamos. En mi caso, yo utilicé un desarmador.


Ahora hay que preparar los LEDs, hay que insertar los LEDs en los orificios, cuidando que no queden muy apretados... si no despues les causará problema al querer sacarlos, créanme. La orientación es la clave del éxito jaja, hay que cuidar que la patita más larga, osea la positiva, que quedé hacia afuera. Una vez que estén orientados los LEDs, hay que doblar la patita más corta, osea la negativa, hacia la derecha. O sea algo así:


Paso 2:

La soldada

Ahora sí, viene lo bueno. Hay que empezar a soldar las patitas negativas, hasta que los 9 LEDs queden unidos por la patita negativa.

Una vez que estén soldadas todas las patitas negativas hay que retirarlo con cuidado, y después repertir la operación 3 veces hasta que tengas los 3 niveles del cubo.

Una vez que los 3 niveles esten completos, hay que pasar a la segunda fase. Hay que soldar las patitas positivas, para hacer esto utilizaremos nuestro cable caiman para sujetar el LED con la patita del led superior, de la siguiente manera.



Una vez que esté bien sujetada hay que tomar una pinza y doblar un poco la punta de la pata del LED que esté en la base para facilitar el trabajo. No tiene que ser una medida específica, puede ser algo como esto:


Después de ahí es, paciencia, paciencia, paciencia...

Si lograron terminar de soldar, ya tienen un 85% del proyecto, estamos muy cerca. En este punto deberian tener algo parecido a esto.


Si terminaron con algo parecido a esto, probablemente quieran regresarse unos pasos.


Paso 3:

El circuito

La parte del circuito es bastante sencilla, aunque al principio pueda parecer enredosa. Primero y por sanidad mental vamos a nombrar nuestros LEDs. Si no quieren soldarlo en una base aún, lo cual recomiendo ampliamente, pueden utilizar 2 protos grandes para probar su circuito, como lo hice yo.

A los 9 LEDs que conforman nuestra base les pondremos las primeras letras del alfabeto... "Desde la A hasta la I". A continuación les pongo una imagen del circuito hecha con Fritzing.



Como pueden ver hay 3 LEDs que están arriba a la derecha. Estos están representando nuestros 3 niveles, de ahí el imaginativo nombre de Nivel 1, Nivel 2 y Nivel 3. Estos van conectados a los 3 cables que se soldaron en el último paso. Vamos a explicar las conexiones de la siguiente forma:

  • Los 3 transistores van contectados a tierra uniéndolos del emisor.
  • Conecta 1 resistencia de 22Kohms entre la base del transistor(la patita del medio) y el pin 13 digital de tu Arduino.
  • Conecta 1 resistencia de 22Kohms entre la base del transistor(la patita del medio) y el pin 13 digital de tu Arduino.
  • Conecta 1 resistencia de 22Kohms entre la base del transistor(la patita del medio) y el pin 13 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED A y el pin 10 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED B y el pin 9 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED C y el pin 8 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED D y el pin 7 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED E y el pin 6 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED F y el pin 5 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED G y el pin 4 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED H y el pin 3 digital de tu Arduino.
  • Conecta 1 resistencia de 220 Ohms entre el LED I y el pin 2 digital de tu Arduino.

Se debería ver algo como esto, o probablemente mejor jaja.



Código:

                                    
                                            /*                                       
    LED 3*3*3 CUBE 

    Version  : 01
    Author   : Kapthura Jayasanka
    Date     : 2015.04.09
    
    Blog     : http://kapthura.blogspot.com/p/home-page.html
    Google+  : https://plus.google.com/+KapthuraJayasanka/posts
    LinkedIn : https://lk.linkedin.com/pub/kapthura-jayasanka/6b/444/b94
*/

int ledpin; //Use for Pattern 5 
int dt=0; //Use for Pattern 1 Delay time


void setup() {
  pinMode(2, OUTPUT);
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(13, OUTPUT);
}


void loop() {
  clearn();
  p1C();
  clearn();
  p2C();
  clearn();
  p3C();
  clearn();
  p4C();
  clearn();
  p5C1();
  clearn();
  p6C();
}


//Active & deactive Levels
//Level 1
void L1A(){
  digitalWrite(13, HIGH);
}

void L1DA(){
  digitalWrite(13, LOW);
}

//Level 2
void L2A(){
  digitalWrite(12, HIGH);
}

void L2DA(){
  digitalWrite(12, LOW);
}

//Level 3
void L3A(){
  digitalWrite(11, HIGH);
}

void L3DA(){
  digitalWrite(11, LOW);
}

//Tren off all Levels & all Led's
void clearn(){
  L1DA();
  L2DA();
  L3DA();
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10,LOW);
}

/*Pattern 1 
Runner*/

void p1(int dt){
for (int i = 2; i <=10; i++){
   digitalWrite(i, HIGH);
  delay(dt);
  digitalWrite(i, LOW);
  delay(dt);
  } 
}

/*Pattern 1 
Controller*/
void p1C(){
  L1A();
  p1(200);
  L1DA();
  
  L2A();
  p1(200);
  L2DA();
  
  L3A();
  p1(200);
  L3DA();
}


//**********************************


/*Pattern 2 
Runner */

void p2(){
  int dt2=100;
  digitalWrite(6, HIGH);
  delay(dt2);
  digitalWrite(6, LOW);
  delay(dt2);
  digitalWrite(7, HIGH);
  delay(dt2);
  digitalWrite(7, LOW);
  delay(dt2);
  digitalWrite(10, HIGH);
  delay(dt2);
  digitalWrite(10, LOW);
  delay(dt2);
  digitalWrite(9, HIGH);
  delay(dt2);
  digitalWrite(9, LOW);
  delay(dt2);
   digitalWrite(8, HIGH);
  delay(dt2);
  digitalWrite(8, LOW);
  delay(dt2);
  digitalWrite(5, HIGH);
  delay(dt2);
  digitalWrite(5, LOW);
  delay(dt2);
  digitalWrite(2, HIGH);
  delay(dt2);
  digitalWrite(2, LOW);
  delay(dt2);
  digitalWrite(3, HIGH);
  delay(dt2);
  digitalWrite(3, LOW);
  delay(dt2);
  digitalWrite(4, HIGH);
  delay(dt2);
  digitalWrite(4, LOW);
  delay(dt2);
}

/*Pattern 2 
Controller*/
void p2C(){
  
  L1A();
  p2();
  L1DA();
  
  L2A();
  p2();
  L2DA();
  
  L3A();
  p2();
  L3DA();
  
}


//*******************************


/*Pattern 3
Runner*/

void p3(){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
  delay(300);
  digitalWrite(2, LOW);
  digitalWrite(3, LOW);
  digitalWrite(4, LOW);
  digitalWrite(5, LOW);
  digitalWrite(6, LOW);
  digitalWrite(7, LOW);
  digitalWrite(8, LOW);
  digitalWrite(9, LOW);
  digitalWrite(10,LOW);
  delay(300);
}


/*Pattern 3 
Controller*/
void p3C(){
  L1A();
  p3();
  L1DA(); 
  L2A();
  p3();
  L2DA();
  L3A();
  p3();
  L3DA();
  L3A();
  p3();
  L3DA();
  L2A();
  p3();
  L2DA();
  L1A();
  p3();
  L1DA();
}


//*******************************


/*Pattern 4 
Runner */
void p4(){
  digitalWrite(2, HIGH);
  digitalWrite(3, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(5, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(7, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(9, HIGH);
  digitalWrite(10, HIGH);
}

/*Pattern 4
Controller*/
void p4C(){ 
  L1A();
  L2A();
  L3A();
  p4();
  delay(1000);
}


//*******************************


/*Pattern 5 (Have two runners 5a,5b) 
Runner 5a*/
void p5a(int ledpin){
  int dt3=150;
clearn();
  L1A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L1DA();
  L2A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L2DA();
  L3A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L3DA();
}

/*Pattern 5b 
Runner*/
void p5b(int ledpin){
  int dt3=80;
  clearn();
  L3A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L3DA();
  L2A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L2DA();
  L1A();
  digitalWrite(ledpin, HIGH);
  delay(dt3);
  digitalWrite(ledpin, LOW);
  delay(dt3);
  L1DA();
}

/*Pattern 5 
Controller*/
void p5C1(){
  p5b(2);
  p5b(3);
  p5b(4);
  p5b(7);
  p5b(10);
  p5b(9);
  p5b(8);
  p5b(5);
}


//*************************

/*Pattern 6 
Runner*/
void p6(){
  int dt4=350;
  digitalWrite(2, HIGH);
  digitalWrite(4, HIGH);
  digitalWrite(6, HIGH);
  digitalWrite(8, HIGH);
  digitalWrite(10, HIGH);
  delay(dt4);
  digitalWrite(2, LOW);
  digitalWrite(4, LOW);
  digitalWrite(6, LOW);
  digitalWrite(8, LOW);
  digitalWrite(10, LOW);
  delay(dt4); 
}


/*Pattern 6
Controller*/
void p6C(){
  L1A();
  p6();
  L1DA();
  L2A();
  p6();
  L2DA();
  L3A();
  p6();
  L3DA();
}
                                    
                                

Paso 4:

El video


Espero les haya gustado, cualquier duda, por favor no duden en hacerla llegar en la página de contacto o a través de Facebook.

Comentarios:

  • Este Proyecto aun no tiene comentarios.
mode_edit