codigo 3x3x3 led?

Hola estoy buscando un codigo para mi 3x3x3 con led que he contruido siguiendo las instrucciones de Cubo de leds 3x3x3 + Arduino donde tambien hay un codigo para probar el encendido aleatorio de los leds, Pero me guataria un codigo para hacer algo como lo que se ve en youtube. y asi poder aprender un poco como funciona.

sabeis de otro codigo, para ver si entre varios puedo encontrar y entender algo.
Gracias

¿Te has mirado el ejemplo que han puesto en la página que comentas? Porque para aprender como funciona está perfecto. El truco es la sentencia esta:
digitalWrite(Filas[RandFila], HIGH);

enciendes la fila que quieras, en vez de Filas[RandFila] pones el numero de la fila y listo controlas tu el led en vez que sea aleatoriamente.

Si no entiendes el código que está en el ejemplo mirate un poco un manual de c. Salu2

Gracias ionhs

Ese ejemplo si lo vi y lo entendi, pero no se como hacer una intro como las de yutube con ese ejemplo que no sea muy feo el codigo.
pero e encontrado otro codigo y voy a seguir tu consejo y con un manual destriparlo para entenderlo bien.

Gracias!

podrías poner diferentes funciones, así te quedará un poco más limpio el código, así en el loop, solo llamarías a las funciones en el orden deseado.
esperamos ver tu animación pronto.

El tema es que puedes activar los 9 led de cada planta a la vez. Pero no puedes activar a la vez más de una planta. Para encender todos los leds tienes que encender la primera planta, apagar, encender la segunda planta, apagar, encender la tercera y apagar. Eso una y otra vez en muy poco tiempo, de esa manera da la sensación que están todos los leds encendidos.

Cuando hice pruebas vi que los led alumbraban suave por lo que hay que usar led de alta ilumniación. No he podido probalo con estos leds, asi que no te puedo decir que tal van, pero son más caros que los leds normales.

si los pides en paquetes grandes salen a un precio decente. Uno a uno es una ruina. Si compras, que sean difusos, sino no se ve bien. Los direccionales( transparentes), solo se ven bien en una dirección, que será justo donde tu no quieras, mirando para arriba.

Hola mirasu... hace un tiempo estuve jugando con el manejo de leds y descubrí algunas cosas interesantes.
Particularmente quería manejar la intensidad de los leds y los colores por lo que era mas complejo de lo que estás planteando pero... muchas cosas en común.

1- Si queres hacer algo bien claro a nivel soft tenes que pensar en diseñar algo basado en objetos. Ahora bien... cuando uno encara ese tipo de soluciones en este tipo de entornos (microcontroladores) lo que suele suceder (dependiendo de lo que estés diseñando) es relentizar todo el proceso de ejecución. Ojo con esto. Por mas linda que parezcan las clases y todo eso... creo que al final afectan temas de performance y....

2- En este caso puntual donde tenes que multiplexar la performance debe ser alta... como te dicen "ionhs" los leds se van a atenuar por ello te combiene usar leds de alta iluminación.

Si queres hacer algo mucho mas escalable... y salir de lo que es 3x3 ya vas a tener que pensar en otros componentes que te solucionen este tipo de problemas (multiplexado) y hasta te multipliquen la cantidad de puertos digitales. Pero eso ya es para otro post je.

Yo te recomendaría:
Hacer algo mas modularizado (si queres orientarloa objetos mejor)
Juga con los valores de delay(???)... es super importante encontrar el equilibrio en esto para evitar que la luz se atenue o se vean parpadeos.

Aprovecho para poner el codigo de la página que me costó encontrar je

int Columnas[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
int Filas[] = {12, 11, 10};

int RandFila;
int RandColumna;

int tiempo;

int barrera = 0;

void setup() 
{
  int contador;
  
  for (int contador = 0; contador < 10; contador++)  
  {
     pinMode(Columnas[contador], OUTPUT);      
  }  
   for (int contador = 0; contador < 4; contador++)  
  {
    pinMode(Filas[contador], OUTPUT);      
  } 
  Serial.begin(9600);  
}

void loop()
{   
  RandLed();
}

void RandLed()
{

  RandFila = random(0,3);
  RandColumna = random(0,9);
  
  digitalWrite(Filas[RandFila], HIGH);
  digitalWrite(Columnas[RandColumna], HIGH);
  
  delay(75);
  
  digitalWrite(Filas[RandFila], LOW);
  digitalWrite(Columnas[RandColumna], LOW);
  
  delay(50);
}

Contá como te fue con esto y.... obviamente posteate el código final.

Suerte,

Market

iohns, yo creo que si puedes tener varias capas encendidas a la vez, no tienes por que apagar una para encender otra. Yo para el cubo de 333 uso dos uln2803, unas resistencias y 3 transistores, ya se que no haría falta, pero me gusta probar diferentes soluciones. Lo alimento independientemente del arduino con una pila de 4.5, de esta manera arduino hace el control los uln hacen de potencia y tengo las 3 capas encendidas a la vez.

No he usado el uln2803 asi que no se como trabaja. Yo he hecho como el circuito que aparece en el link y no creo que se pueda tener más de una capa a la vez. Salu2

Hola ionhs,
me imagino que el circuito que tu tienes, puedes activar las 3 capas a la vez, dado que me imagino que usas 3 transistores.

A ver si el Olentzero te trae algunos componentes, :slight_smile:

Por activar lo puedo hacer pero obtendré en las 3 capas los mismos leds encendidos. Para iluminar todo el cubo si pero si quieres que no se enciendan los 3 led de la misma columna, tendrás que hacer un barrido.

Al olentzero solo le pedimos que pase el año para volver a tener presupuesto que estamos pelados y se está haciendo el último mes y medio muy largo :cold_sweat:

por cierto tengo el cubo funcionando con un arduStamp de fm.

estamos en todos los institutos igual.