Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

29/11/2015 #1

Avatar de Juan Tamarit

[Aporte] Cubo LED 2^3
Hola a toda la comunidad! Dejo como aporte un cubo LED de 2x2x2 con su respectivo programa de Arduino con 11 simpáticas animaciones.
Aprovecho para consultar si alguien quiere hacerme sugerencias para mejorar mis habilidades de programación o de como optimizar el código.

Pido disculpas a los moderadores si esta no es la forma correcta de incorporar el código para que la gente lo extraiga, y de ser así les agradeceré que me indiquen cómo subirlo.

Gracias y saludos!

Código PHP:
/*Programa de Cubo LED 2x2x2 V1.1.0 por Juan Manuel Tamarit. 2015.
  Cubo LED de ánodos=columnas y cátodos=capas (en adelante "layers"). 
  Cada columna tiene resistencia de 220 Ohm. 
  Cada layer transistorizada: colector a layer, base a Arduino
  con resistencia de 15 KOhm y emisor a GND. */

int col[] = {10965};
int lay[] = {42};

void setup()
{
  
pinMode(13OUTPUT);
  for (
int i 04i++) //Declaración de los pines de las columnas.
  
{
    
pinMode(col[i], OUTPUT);
  }
  for (
int i 02i++) //Declaración de los pines de las layers.
  
{
    
pinMode(lay[i], OUTPUT);
  }
}

void loop() //Orden de los efectos. LED incorporado en Arduino indica el cambio entre ellos.
{
  
int btwfx 10;
  
digitalWrite(13LOW);
  
fx1();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx2();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx3();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx4();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx5();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx6();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx7();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx8();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx9();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx10();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx11();
  
digitalWrite(13HIGH);
  
delay (btwfx);
  
digitalWrite(13LOW);
  
fx12();
  
digitalWrite(13HIGH);
  
delay (btwfx);
}

void fx1 ()
{
  
int pov 5;
  
int dm 0;
  
digitalWrite (lay[0], HIGH); //Dimerizado on-off todo el cubo.
  
digitalWrite (lay[1], HIGH);
  for (
dm 0dm 255dm++)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  for (
dm 255dm 0dm--)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  
digitalWrite (lay[1], LOW);
  for (
dm 0dm 255dm++) //Dimerizado on-off lay0.
  
{
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  for (
dm 255dm 0dm--)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  
digitalWrite (lay[0], LOW);
  
digitalWrite (lay[1], HIGH); //Dimerizado on-off lay1.
  
for (dm 0dm 255dm++)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  for (
dm 255dm 0dm--)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  
digitalWrite (lay[1], LOW);
}

void fx2 ()
{
  
int pov 150;
  
int cntfx 0;
  for (
cntfx 0cntfx 4cntfx++)
  {
    
digitalWrite (lay[0], HIGH); //Eje X.
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[2], LOW);
    
delay (pov);
    
digitalWrite (col[0], HIGH); //Eje Y.
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[3], HIGH);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
delay (pov);
    
digitalWrite (lay[0], HIGH); //Eje Z.
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
delay (pov);
  }
}

void fx3 ()
{
  
int pov 100;
  
int cntfx 0;
  for (
cntfx 0cntfx 4cntfx++)
  {
    
digitalWrite (lay[0], HIGH); //Vuelta on-off por lay0, desde col0 hasta col2.
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (lay[1], HIGH); //Vuelta on-off por lay1, desde col0 hasta col2.
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[1], LOW);
    
delay (pov);
    
digitalWrite (lay[0], HIGH); //Vuelta on-off por lay0, desde col3 hasta col2.
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (lay[1], HIGH); //Vuelta on-off por lay1, desde col3 hasta col2.
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[1], LOW);
    
delay (pov);
  }
}

void fx4() //Rotación de una linea diagonal.
{
  
int pov 1;
  
int cnt 0;
  
int cntfx 0;
  for (
cntfx 0cntfx 10cntfx++)
  {
    for (
cnt 0cnt 50cnt++)
    {
      
digitalWrite (lay[0], HIGH);
      
digitalWrite (col[0], HIGH);
      
delay (pov);
      
digitalWrite (lay[0], LOW);
      
digitalWrite (col[0], LOW);
      
digitalWrite (lay[1], HIGH);
      
digitalWrite (col[3], HIGH);
      
delay (pov);
      
digitalWrite (lay[1], LOW);
      
digitalWrite (col[3], LOW);
    }
    for (
cnt 0cnt 50cnt++)
    {
      
digitalWrite (lay[0], HIGH);
      
digitalWrite (col[1], HIGH);
      
delay (pov);
      
digitalWrite (lay[0], LOW);
      
digitalWrite (col[1], LOW);
      
digitalWrite (lay[1], HIGH);
      
digitalWrite (col[2], HIGH);
      
delay (pov);
      
digitalWrite (lay[1], LOW);
      
digitalWrite (col[2], LOW);
    }
    for (
cnt 0cnt 50cnt++)
    {
      
digitalWrite (lay[0], HIGH);
      
digitalWrite (col[3], HIGH);
      
delay (pov);
      
digitalWrite (lay[0], LOW);
      
digitalWrite (col[3], LOW);
      
digitalWrite (lay[1], HIGH);
      
digitalWrite (col[0], HIGH);
      
delay (pov);
      
digitalWrite (lay[1], LOW);
      
digitalWrite (col[0], LOW);
    }
    for (
cnt 0cnt 50cnt++)
    {
      
digitalWrite (lay[0], HIGH);
      
digitalWrite (col[2], HIGH);
      
delay (pov);
      
digitalWrite (lay[0], LOW);
      
digitalWrite (col[2], LOW);
      
digitalWrite (lay[1], HIGH);
      
digitalWrite (col[1], HIGH);
      
delay (pov);
      
digitalWrite (lay[1], LOW);
      
digitalWrite (col[1], LOW);
    }
  }
}

void fx5()
{
  
int pov 100;
  
int cntfx 0;
  for (
cntfx 0cntfx 5cntfx++)
  {
    
digitalWrite (col[0], HIGH); //Lluvia en col0.
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[3], HIGH); //Lluvia en col3.
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[1], HIGH); //Lluvia en col1.
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[2], HIGH); //Lluvia en col2.
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[0], HIGH); //Lluvia en col0 y col3.
    
digitalWrite (col[3], HIGH);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[1], HIGH); //Lluvia en col1 y col2.
    
digitalWrite (col[2], HIGH);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[0], LOW);
    
delay (pov);
  }
}

void fx6()
{
  
int pov 100;
  
int cntfx 0;
  for (
cntfx 0cntfx 8cntfx++)
  {
    
digitalWrite (lay[0], HIGH); //LED corriendo por lay0, antihorario.
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], HIGH); //LED corriendo por lay1, horario.
    
digitalWrite (lay[0], LOW);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (lay[1], LOW);
  }
}

void fx7()
{
  
int pov 500;
  for (
pov 500pov 20pov -= 20//Titileo del cubo acelerando.
  
{
    
digitalWrite (lay[0], HIGH);
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
delay (pov);
  }
  for (
pov 20pov 500pov += 20//Titileo del cubo decelerando.
  
{
    
digitalWrite (lay[0], HIGH);
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
delay (pov);
  }
}

void fx8()
{
  
int pov 100;
  
int cntfx 0;
  for (
cntfx 0cntfx 10cntfx++)
  {
    
digitalWrite (lay[0], HIGH); //Plano diagonal de derecha-adelante a izquierda-fondo
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
delay (pov 2);
    
digitalWrite (col[3], HIGH); //Plano diagonal de derecha-fondo a izquierda-adelante
    
delay (pov);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
delay (pov 2);
  }
}

void fx9() //Encendido total y apagado lento.
{
  
digitalWrite (lay[0], HIGH);
  
digitalWrite (lay[1], HIGH);
  
digitalWrite (col[0], HIGH);
  
digitalWrite (col[1], HIGH);
  
digitalWrite (col[2], HIGH);
  
digitalWrite (col[3], HIGH);
  
int dm 255;
  
int cntfx 0;
  
int pov 10;
  for (
cntfx 0cntfx 4cntfx++)
  {
    for (
dm 255dm 0dm--)
    {
      
analogWrite (col[0], dm);
      
analogWrite (col[1], dm);
      
analogWrite (col[2], dm);
      
analogWrite (col[3], dm);
      
delay (pov);
    }
  }
  
digitalWrite (lay[0], LOW);
  
digitalWrite (lay[1], LOW);
}

void fx10() //Giro horario al frente, antihorario al fondo.
{
  
int pov 150;
  
int cntfx 0;
  for (
cntfx 0cntfx 20cntfx++)
  {
    
digitalWrite (lay[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);

  }
  
digitalWrite (col[1], LOW);
  
digitalWrite (col[2], LOW);
}

void fx11() //Dimerizado on de a dos LED´s en diagonales opuestas. Dimerizado off al completarse
{
  
int dm 0;
  
int pov 12;
  for (
dm 0dm 255dm++)
  {
    
digitalWrite (lay[1], HIGH);
    
analogWrite (col[0], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  for (
dm 0dm 255dm++)
  {
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[0], HIGH);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
delay (pov 2);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov 2);
  }
  for (
dm dm 255dm++)
  {
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[0], HIGH);
    
analogWrite (col[0], dm);
    
analogWrite (col[3], dm);
    
delay (pov 3);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov 3);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
delay (pov 3);
  }
  for (
dm dm 255dm++)
  {
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[1], HIGH);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
delay (pov 3);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[1], HIGH);
    
digitalWrite (col[2], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov 3);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], LOW);
    
digitalWrite (col[3], LOW);
    
digitalWrite (lay[1], HIGH);
    
digitalWrite (col[0], HIGH);
    
digitalWrite (col[3], HIGH);
    
delay (pov 3);
  }
  
digitalWrite (lay[0], HIGH);
  for (
dm 255dm 0dm--)
  {
    
analogWrite (col[0], dm);
    
analogWrite (col[1], dm);
    
analogWrite (col[2], dm);
    
analogWrite (col[3], dm);
    
delay (pov);
  }
  
digitalWrite (lay[1], LOW);
  
digitalWrite (lay[0], LOW);
  
digitalWrite (col[0], LOW);
  
digitalWrite (col[1], LOW);
  
digitalWrite (col[2], LOW);
  
digitalWrite (col[3], LOW);
}

void fx12() //Aparece un LED, salta a su esquina opuesta y desaparece.
{
  
int pov 100;
  
int dm 0;
  
int cntfx 0;
  
digitalWrite (lay[0], HIGH);
  for (
cntfx 0cntfx 10cntfx++)
  {
    for (
dm 0dm 255dm++)
    {
      
analogWrite (col[0], dm);
      
delay (5);
    }

    
digitalWrite (col[0], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (col[0], LOW);
    
digitalWrite (col[3], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    for (
dm 255dm 0dm--)
    {
      
analogWrite (col[3], dm);
      
delay (5);
    }
    
digitalWrite (col[3], LOW);
    for (
dm 0dm 255dm++)
    {
      
analogWrite (col[1], dm);
      
delay (5);
    }
    
digitalWrite (col[1], HIGH);
    
delay (pov);
    
digitalWrite (lay[0], LOW);
    
digitalWrite (lay[1], HIGH);
    
delay (pov);
    
digitalWrite (col[1], LOW);
    
digitalWrite (col[2], HIGH);
    
delay (pov);
    
digitalWrite (lay[1], LOW);
    
digitalWrite (lay[0], HIGH);
    
delay (pov);
    for (
dm 255dm 0dm--)
    {
      
analogWrite (col[2], dm);
      
delay (5);
    }
    
digitalWrite (col[2], LOW);
  }
  
digitalWrite (lay[0], LOW);

Agradezco a Darkbytes por la enseñanza, y sigo su consejo: El cubo consta de ocho LED´s dispuestos en cuatro columnas de dos cada una, con los ánodos comunes a toda la columna. Los cátodos se unen entre ellos para formar los "pisos" (eje Y), los cuáles constan de cuatro LED´s cada uno. Estos "pisos" están transistorizados para habilitar o no dicho "piso". Estos transistores son dirigidos desde los pines 2 y 4 del Arduino con una resistencia de 15KOmhs en serie con la base de cada transistor. Los colectores se conectan con los "pisos" y los emisores a GND. Desde los pines 10, 9 , 5 y 6 del Arduino se controla cada una de las columnas mediante una resistencia de 220Omhs en serie con cada una. Esto en cuanto al hardware, pero como leí por ahí: un cubo LED solo es tan atractivo como el software que corre. Adjunto esquema, foto ilustrativa y archivo de Livewire y código en formato .ino en el archivo .zip . Gracias a toda la comunidad. Si hay consultas estoy atento. Saludos.
30/11/2015 #2

Avatar de juanma2468

Estaría bueno si pudieras subir un pequeño videoito, así se apreciaría mejor tu aporte para que otro lo pueda ver.
02/12/2015 #3

Avatar de Juan Tamarit

Estimado tocayo juanma2468: me encantaría dejarles un video, pero mi internet es EXCESIVAMENTE lenta, nunca lograría subirlo La mejor sugerencia que puedo hacer es que lo armen y lo prueben. Es sencillo y vale la pena. Me comprometo a ir incluyendo más animaciones, si así lo desean. A fin de cuentas, estoy tratando de explotar esto al máximo para cuando pase a la próxima base: 3^3 Abrazos a toda la comunidad.
02/12/2015 #4

Avatar de electroconico

puedes crear un gif aminado con tu video.
02/12/2015 #5

Avatar de Juan Tamarit

Ajá. No lo sabía. ¿Cómo hago eso?
02/12/2015 #6

Avatar de juanma2468

Aca te dejo un tutorial de como hacer un gif
02/12/2015 #7

Avatar de electroconico

Juan Tamarit dijo: Ver Mensaje
Ajá. No lo sabía. ¿Cómo hago eso?
http://gifmaker.me/
26/12/2015 #8

Avatar de Juan Tamarit

Bueno... Perdón por dejar medio colgado el hilo. No logre ni siquiera VER cómo se hacia el gif (así de lenta es mi internet).

Continuando con el tema: hice algunas mejoras al circuito y al programa y quiero compartirlas con la comunidad.

Incorpore dos pulsadores: uno permite elegir el modo "Automático" donde los efectos se suceden uno tras otro, o el modo "Manual" donde un solo efecto quede aconteciendo, hasta que se presione el segundo interruptor y se pase al próximo efecto.

Dentro de poco comenzaré con la construcción de un 4 al cubo, aprovechando dos latches 74hc373 que logré conseguir en una odisea de investigación de datasheets y visitas a las casas de electrónica de Bariloche.

Abrazos a toda la comunidad!
Archivos Adjuntos
Tipo de Archivo: rar cubo_vickino.rar (2,5 KB (Kilobytes), 8 visitas)
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Arduino y Raspberry Pi

Cerrar
Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos » Arduino y Raspberry Pi

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.