Cubo Led con Arduino

Hacía mucho que quería armar el conocido cubito, pero por falta de tiempo siempre quedaba para después. Lo hice de 3x3x3 leds, y me hubiese gustado hacerlo un poco más grande, pero el “problema” está en que si, por ejemplo, se aumenta en 1 el lado, la cantidad de leds ya pasan a ser 64 y el presupuesto se estira mucho. Mejor lo dejamos en 27 leds xD

Para quienes preguntan, aquí dejo un pequeño how to (sin imágenes porque olvidé sacar el paso a paso) y un video de lo que quedó.

Materiales: 27 leds (yo usé de alta luminiscencia), 12 resistencias de 1KΩ (9 para los leds, 3 para los transistores), 3 transistores 2N3904, una placa Arduino Uno (pueden ser las otras), cables “de colores” y si tienen protoboard en buena hora, sino se puede también.

Pasos y Conexiones:

Haz una plantilla de cartón o madera (algo rígido) con agujeros de 5mm, en los que pondrás los leds y doblarás las patas para luego soldarlos. Una vez ubicados los 9 leds, debes doblar y unir entre sí los cátodos (patas cortas) de todos los leds, dejando sin doblar los ánodos. Con eso tendrás listo un “piso”. Repite el paso 3 veces haciendo “3 pisos”. Una vez que ya tienes los 3 pisos, los unes entre ellos por medio de los ánodos. Con eso tendrás 9 ánodos en la base que conectan con los ánodos de los otros pisos y 3 pisos unidos por los cátodos.

A cada uno de esos 9 ánodos que tenemos en la base, les pondremos una resistencia, y luego los conectaremos a las salidas del arduino ( yo conecté de la 1 a la 9). Las salidas 10, 11 y 12 irán cada una a una resistencia, y luego a la base de cada transistor (los usaremos en modo conmutación). Los emisores de los 3 transistores, los unimos y los mandamos a masa (pin GND). Y por último, a los 3 colectores mandamos los 3 pisos del cubo.

Código: Para hacerlo un poco más amplio, utilicé la librería ledcube.h con la cuál trabajamos en C sin problemas, e incluso podemos ampliar fácilmente el tamaño del cubo. Les dejo el code, aunque todavía me queda probar hacer más cosas:

#include <LedCube.h>

#define SIZE 3
#define COLS (SIZE*SIZE)

byte levelPins[SIZE] = {10,11,12};
byte colPins[COLS] = {1,2,3,4,5,6,7,8,9};

LedCube cube(3, levelPins, colPins);

void setup ()
{
//    Serial.begin(9600);
}

void loop ()
{
delay(100);
cube.enableBuffer(false);

// todos test
for(byte d=25; d>2; d-=2) {
for(byte r=0; r<cube.getLevels(); r++) {
cube.lightLevel(r,d);
}
}

// random
cube.randomLight(random(25,100),100);

// columna random prende apaga nivel
for(byte x=0; x<=15; x++) {
cube.lightDrop(random(0,cube.getCols()), random(50,150));
}

// circulo en nivel random
for(byte x=0; x<=5; x++) {
cube.lightPerimeter(random(0,cube.getLevels()), random(1,5), random(25,100));
}

// columna random rapido
cube.randomColumn(25);

// apaga una columna random
cube.enableBuffer();
for(byte c=0; c<25; c++)
{
cube.fillBuffer();
cube.invertBuffer();
cube.randomColumn();
cube.drawBuffer(10);
}
cube.enableBuffer(false);

// entra y sale columna
for(byte c=1, d=0; c<=36; c++)
{
if(c%2 == 0){
for(d=0; d<20; d++) {
cube.lightColumn(2,1);
cube.lightColumn(4,1);
cube.lightColumn(6,1);
cube.lightColumn(8,1);
}
} else if(c%4 == 1) {
for(d=0; d<30; d++) {
cube.lightColumn(1,1);
cube.lightColumn(3,1);
cube.lightColumn(7,1);
cube.lightColumn(9,1);
}
} else {
for(d=0; d<70; d++) {
cube.lightColumn(5,1);
}
}
}

// diam y caja
byte diamond[] = {1,5, 2,2, 2,4, 2,5, 2,6, 2,9, 3,5};
byte box[] = {1,1, 1,2, 1,3, 1,4, 1,6, 1,7, 1,8, 1,9, 2,2,  2,1, 2,3, 2,7, 2,9,  3,1, 3,2, 3,3, 3,4, 3,6, 3,7, 3,8, 3,9};
cube.lightSequence(box, sizeof(box), 200);
cube.lightSequence(diamond, sizeof(diamond), 400);

// efecto helicoptero
cube.enableBuffer();
byte topSeq[8] = {1,4,7,8,9,6,3,2};
byte botSeq[8] = {9,6,3,2,1,4,7,8};
for(byte r = 1; r<8; r++){
for(byte s= 1; s<9; s++){
cube.clearBuffer();
cube.lightOn(1,botSeq[s]);
cube.lightOn(2,5);
cube.lightOn(3,topSeq[s]);
cube.drawBuffer(20);
}
}

// apaga un led por vez
cube.fillBuffer();
cube.drawBuffer(25);
for(byte w=0, l, c; w<27; ){
l = random(0,cube.getLevels());
c = random(0,cube.getCols());
if(cube.getBufferAt(l,c)){
cube.lightOff(l,c);
cube.drawBuffer(15+w*2);
w++;
}
}
}

Por último un video:

Be Sociable, Share!

9 respuestas a “Cubo Led con Arduino”

  1. Rodrigo Córdoba

    Muy copado

  2. klaus

    hola que tal oye es muy bueno tu proyecto pero me podrias dar los materiales y el programa que se necesita para hacer eso? por favor…. muchas gracias ATTE: klaus ulises bernal ticona

  3. christian

    y en que cambiaria el codigo si el cubo de led es 8 x 8 x 8 ?

  4. jesus

    oie y no tendras el codigo para un cubo de leds de 8 x 8 x 8?

  5. ALBERTO

    hola bro oyes me marca error en la linea:

    LedCube cube(3, levelPins, colPins);

    sketch_may03b:8: error: ‘LedCube’ does not name a type
    sketch_may03b.cpp: In function ‘void loop()’:
    sketch_may03b:18: error: ‘cube’ was not declared in this scope

    esto por que es???

  6. Jonas

    Podés hacer un tutorial de las funciones de la librería “CubeLed” una explicación de cómo funciona sería súper útil.

    Gracias y saludos.

Leave a Reply