[Aporte] Cubo LED 5x5x5, con PIC16F877A.

Consulta ... los orificios en la placa, para que estan ?? netamente estetica o alguna funcion especifica...

los orificios de la placa estan hay para no tener que hacer una plantilla en otro lado(como la que piensas hacer -si no la haz hecho ya- en madera...), si leiste bien el PDF hay esta explicado para que son los orificios.

como siempre hago, leo primero.(intenta releer para hacerte una buena imagen mental)

excelente trabajo..
solo que al igual que Hyperion me resulta dificil distinguir como estan conectados los leds con respecto al pic, y ademas como estan conectados los transistores
no tendras alguna simulación o esquema de como estan conectadas las salidas del pic y el cubo.

y otra gran duda que tengo es en saber cual es la funcion de los transistores

se te agradecería mucho si me contestaras esas preguntas

1. obviamente tengo la simulacion y el esquema del circuito(lo hice desde cero), pero... ...no posteare el diseño esquematico, es solo para mi uso.
2. en el pdf (en la primera hoja), esta explicada la funcion de los transistores.
3. los transistores funcionan como llaves para las lineas de poder de los leds.

salu2
 
Última edición:
Muchas gracias por tu aporte. Me salvaste de volver a gastar todo, ya que esta haciendo las conexiones al revés, es decir, los leds de los layers, conectaba todos los negativos, y los pisos dejaba los positivos de forma perpendicular... Muy buen trabajo, apenas estoy empezando con esto de la electrónica, y me fascina, gracias

En tus últimas fotos vi que los layers los hacías conectando todos los ánodos, mientras que los cátodos los dejabas libres para hacer las debidas conexiones en los pisos, ¿No?
 
hola, felicidades por tu matriz un gran desarrollo, y me han dado ganas de hacerlo, acabo de pedir 150 led por internet los cuales son blancos de alto brillo y fueron algo economicos, lo que me falta y estoy buscan es el programador de pic´s y el pic, al ver tus diagramas indentifico la conexión de los catodos y anodos solo una pregunta usaste algun soporte o que tipo de cable usas para unir los catodos en general aparte del mismo led, y nuevamente felicidades
 
usaste algun soporte o que tipo de cable usas para unir los catodos en general aparte del mismo led, y nuevamente felicidades

la matriz no tiene ningun soporte, solo los leds.
para crear cada nivel use la placa(tal como dice en el pdf)
los catados se unen verticalmente(perpendicular a la placa), no hay que usar otro tipo de cable ni nada parecido.

en el pdf esta todo muy bien explicado.
otra cosa, en lo personal no te recomiendo que hagas el proyecto si no tienes idea alguna de microcontroladores o programacion de estos, ya que la idea de hacer el proyecto es seguir desarrollando animaciones y mirar que tanto "jugo" se le puede llegar a sacar al mismo, solo es una sugerencia obviamente puedes hacerlo(por eso lo subi a la red).
 
Hoo ya veo todo con el mismo led me parece perfecto, y me referia del programador de pic´s ha que no lo tengo puesto solo lo use en practicas y ahora me dieron ganas de comprarlo y hacer varias cosas que he estado viendo, y electronico no soy, sólo soy aficionado y unos cuantas classs que tuve en la uni me ayudaron a comprender muchas cosas, cuales me gusta seguir investigando,aun cuando yo me dedico a la programación puesto que soy de sistemas.

y de nuevo excelete aporte, ha decir verdad tu matriz es la primera que habia visto, y busque por internet y veo que existen más, pero me gusto mas tu matriz ya que se ve algo mas claral y mas estructurado
 
a decir verdad tu matriz es la primera que habia visto, y busque por internet y veo que existen más, pero me gusto mas tu matriz ya que se ve algo mas claral y mas estructurado

Pues esta fue solo un "borrador", ya que actualmente trabajo en una de 10x10x10 RGB.
con el mismo PIC, tal vez intente hacer una con USB pero mas adelante.
 
Ericktronik ...

Consulta ... usas la aplicacion Icprog para poder mandar el .hex al PIC ???

Esta aplicacion la usaba hace muchos años atras y olvide como se usaba ... no se si nos pudieras guiar sobre su correcto uso.

Otra cosa, hasta ahora tengo casi todo listo, la placa, perforaciones y componentes los tengo ... los leds estan en camino (me salio mucho mas barato comprarla en otro lugar) y estoy sacandole fotos a los avances cosa de poder hacer un pdf con todo lo del proyecto ... con cada avance, me entusiasma mas el cubo ...

Saludos.
 
Ericktronik ...

Consulta ... usas la aplicacion Icprog para poder mandar el .hex al PIC ???

Esta aplicacion la usaba hace muchos años atras y olvide como se usaba ... no se si nos pudieras guiar sobre su correcto uso.

Otra cosa, hasta ahora tengo casi todo listo, la placa, perforaciones y componentes los tengo ... los leds estan en camino (me salio mucho mas barato comprarla en otro lugar) y estoy sacandole fotos a los avances cosa de poder hacer un pdf con todo lo del proyecto ... con cada avance, me entusiasma mas el cubo ...

Saludos.

Yo uso el PICkit2 porque me hize un clon con base zif(pronto subire el aporte).
jamas he usado el Icprog.

espero que la proxima sigas las instrucciones del pdf(la matriz de agujeros era para hacer los niveles de leds!, y habia que primero hacer el cubo antes de soldar los componentes.), pero bueno con tal que sirva todo esta bien.
 
Bueno gente,
aca hay un adelanto de la placa controladora de mi CUBO LED 10x10x10 RGB.
ya casi acabo el PCB.
esta solo es la controladora, para esta gran cantidad de leds(1000) habra que ponerlos sobre una plataforma de madera o acrilico transparente u opaco, ademas de delgadas barras de acero o cobre para que tenga una buena estabilidad y el peso no dañe la estructura.
espero que les guste.




:)
 
Buenos dias a todos.
estoy mirando la posibilidad de cambiar el 877 de la nueva placa por un 4550 o un 4553 con usb, y crear un soft para poder manejar el cubo; pero...
necesito 33 pines de salida y en realidad el 4550 y el 4553 tiene solo 32 para poderlos trabajar, alguien sabe como hacer para habilitar un pin mas para trabajarlo como salida?, o si me pueden recomendar un microcontrolador que tenga usb y tenga minimo 33 pines para trabajarlos como salida.
espero que me ayuden.
aca dejo una imagen de los pines de estos microcontroladores.
 
Erick ...

Disculpa el tiempo sin subir informacion ... tuve una semana pesada en la pega y recien el miercoles llegaron los led que pedi, ya el sabado armare la estructura del cubo siguiendo tus indicaciones ...

Tambien encontre algo de informacion sobre algun tipo de programilla para controlar y crear secuencias para un cubo, dejo link de youtube:


Lo que si tengo que revisar muy bien como programar el PIC ya que estuve viendo que usamos programas distintos .... ocupo un programador que compre en Olimex.cl, dejo el link:

http://articulo.mercadolibre.cl/MLC-402592540-programador-de-pic-jdm-serial-v2-con-socket-de-40-pines-_JM

Y utilizo el mismo programa que aparece en esa venta, el ICProg ... al principio me dio problemas por los drivers, ya que tengo win xp sp3 en mi laptop ...

Ahora si bien te habia dicho que monte los puentes primero antes de colocar la estructura del cubo, considere que es mas facil soldar esos componentes en la placa ya que no usan tanto espacio y despues me puedo complicar al colocar cables por entre medio de los pines del cubo (ya que no encontre los conectores SLI individuales, aqui en Santiago de Chile pregunte por ellos pero nadie sabia su nombre o que es lo que eran) ....

Bueno, espero que sirvan en algo el video que coloque para algun futuro cubo controlado por algun programa ...

Saludos y apenas tenga mas info, lo escribire sin problemas.

Hyperion



... algo mas para crear animaciones con un entorno grafico ... lo unico malo que esta en aleman ....


http://www.qube-solutions.de/qube-5/downloads
 
Última edición:
Bueno gente, aca el diseño total y final de la version numero 1 de la controladora del cubo de leds 10x10x10 RGB.

Caracteristicas:
PIC 16F877 (soldado a placa).
Reloj 4MHz a 20MHz.
Frecuencia de trabajo maxima 20MHz.
Seleccion de columnas mediante logica combinacional.
1000(mil) LEDs RGB.
9 Colores basicos.
Maximo 256 Colores.
Conector ICSP(In Circuit Serial Programing).
Comunicacion Serial (RS-232).
Programacion por ISCP o BootLoader.
Switch ON/OFF.
Boton Reset.
Alimentacion por JACK DC.
Entrada de AC entre 6v y 9v.
Regulacion a 5v mediante 3 LM7805.
Proteccion de corrientes inversas mediante diodo.
Filtracion de ruidos en alimentacion con condensadores.
Extremos fijables a base.
Posibilidad de PCB doble capa o puenteado mediante alambre de cobre.
LED indicador de encendido.
Coneccion de LEDs totalmente externa.

y como siempre...
diseño totalmente PROPIO!

ERICKTRONIK DESINGS


 
hola gente, aca hay un nuevo codigo fuente que pueden probar.
ahora es mas facil programar si lo leen bien.

la mejora es que defini las columnas y niveles por medio de bits individuales.

espero les ayude.

Código:
#INCLUDE <16F877A.H>//USAMOS EL PIC 16F877A
#FUSES XT,NOWDT,NOPROTECT,NOLVP//FUSIBLES QUE VAMOS A USAR
#USE DELAY(CLOCK=4Mhz)//USAMOS UNA FRECUENCIA DE RELOJ DE 4MHZ
#include <STDLIB.H>
//Codigo Hecho en su totalidad por Erick Arias Devia
//Bogota D.C. Marzo de 2012

//Puertos mediante definicion de Bytes//
#Byte Porta=0x05
#Byte portb=0x06
#Byte portc=0x07
#Byte portd=0x08
#Byte porte=0x09
//Final de la declaracion de puertos//

//Columnas y niveles, mediante definicion de bits//
#bit col1=0x05.0
#bit col2=0x05.1
#bit col3=0x05.2
#bit col4=0x05.3
#bit col5=0x05.4
#bit col6=0x05.5
#bit col7=0x06.0
#bit col8=0x06.1
#bit col9=0x06.2
#bit col10=0x06.3
#bit col11=0x06.4
#bit col12=0x06.5
#bit col13=0x06.6
#bit col14=0x06.7
#bit col15=0x07.0
#bit col16=0x07.1
#bit col17=0x07.2
#bit col18=0x07.3
#bit col19=0x07.4
#bit col20=0x07.5
#bit col21=0x07.6
#bit col22=0x07.7
#bit col23=0x09.0
#bit col24=0x09.1
#bit col25=0x09.2

#bit niv1=0x08.0
#bit niv2=0x08.1
#bit niv3=0x08.2
#bit niv4=0x08.3
#bit niv5=0x08.4
//Final de la declaracion de columnas y niveles//

int i=0,a=0,n=0,c=0;
//funciones extra
void nivel1on(int){
output_d(0b00000001);
}
void nivel2on(int){
output_d(0b00000010);
}
void nivel3on(int){
output_d(0b00000100);
}
void nivel4on(int){
output_d(0b00001000);
}
void nivel5on(int){
output_d(0b00010000);
}
//------Letras-----
void letra(int){     //traslacion de la letra por niveles
niv1=1;
delay_ms(150);
niv2=1;
delay_ms(150);
niv3=1;niv1=0;
delay_ms(150);
niv4=1;niv2=0;
delay_ms(150);
niv5=1;niv3=0;
delay_ms(150);
niv4=0;
delay_ms(150);
niv5=0;
}
void letraa(int){
Output_a(0b111110);
Output_b(0b01010010);
Output_c(0b10001010);
Output_e(0xff);
}
void letrab(int){
Output_a(0b111111);
Output_b(0b01011010);
Output_c(0b10101011);
Output_e(0b010);
}
void letrac(int){
Output_a(0b101110);
Output_b(0b00011000);
Output_c(0b01100011);
Output_e(0b100);
}
void letrad(int){
Output_a(0b111111);
Output_b(0b00011000);
Output_c(0b10100011);
Output_e(0b011);
}
void letrae(int){
Output_a(0b111111);
Output_b(0b01011010);
Output_c(0b01100011);
Output_e(0b100);
}
void letraf(int){
Output_a(0b111111);
Output_b(0b01010010);
Output_c(0b01000010);
Output_e(0x00);
}
void letrag(int){
Output_a(0b111111);
Output_b(0b01011000);
Output_c(0b01101011);
Output_e(0xff);
}
void letrah(int){
Output_a(0b011111);
Output_b(0b01000010);
Output_c(0b11001000);
Output_e(0xff);
}
void letrai(int){
Output_a(0b110001);
Output_b(0b11111000);
Output_c(0b01100011);
Output_e(0b100);
}
void letraj(int){
Output_a(0b110001);
Output_b(0b01010010);
Output_c(0b01000011);
Output_e(0x00);
}
void letrak(int){
Output_a(0b011111);
Output_b(0b01000100);
Output_c(0b01010100);
Output_e(0b100);
}
void letral(int){
Output_a(0b011111);
Output_b(0b00001000);
Output_c(0b00100001);
Output_e(0b100);
}
void letram(int){
Output_a(0b011111);
Output_b(0b01000001);
Output_c(0b11000100);
Output_e(0xff);
}
void letran(int){
Output_a(0b011111);
Output_b(0b01000001);
Output_c(0b11010000);
Output_e(0xff);
}
void letrao(int){
Output_a(0b101110);
Output_b(0b00011000);
Output_c(0b10100011);
Output_e(0b011);
}
void letrap(int){
Output_a(0b111111);
Output_b(0b01010010);
Output_c(0b10001010);
Output_e(0b001);
}
void letraq(int){
Output_a(0b101110);
Output_b(0b00011000);
Output_c(0b10010011);
Output_e(0b101);
}
void letrar(int){
Output_a(0b111111);
Output_b(0b11010010);
Output_c(0b10101010);
Output_e(0b100);
}
void letras(int){
Output_a(0b110010);
Output_b(0b01011010);
Output_c(0b01101011);
Output_e(0b010);
}
void letrat(int){
Output_a(0b100001);
Output_b(0b11110000);
Output_c(0b01000011);
Output_e(0b000);
}
void letrau(int){
Output_a(0b001111);
Output_b(0b00001000);
Output_c(0b11100001);
Output_e(0b011);
}
void letrav(int){
Output_a(0b000111);
Output_b(0b00000100);
Output_c(0b11010001);
Output_e(0b001);
}
void letraw(int){
Output_a(0b011111);
Output_b(0b01000100);
Output_c(0b11010000);
Output_e(0xff);
}
void letrax(int){
Output_a(0b010001);
Output_b(0b01000101);
Output_c(0b01010100);
Output_e(0b100);
}
void letray(int){
Output_a(0b000011);
Output_b(0b10000010);
Output_c(0b11001001);
Output_e(0x00);
}
void letraz(int){
Output_a(0b110001);
Output_b(0b01011100);
Output_c(0b01100111);
Output_e(0b100);
}
//-------Final Letras---
void upslowon(int){
output_d(0b00000001);//enciende el nivel 1
delay_ms(150);
output_d(0b00000011);//enciende los niveles 1 y 2
delay_ms(150);
output_d(0b00000111);//enciende los niveles 1, 2 y 3
delay_ms(150);
output_d(0b00001111);//enciende los niveles 1, 2, 3 y 4
delay_ms(150);
output_d(0xff);//enciende todos los niveles
delay_ms(150);
}
void upslowoff(int){
output_d(0b00011110);
delay_ms(150);
output_d(0b00011100);
delay_ms(150);
output_d(0b00011000);
delay_ms(150);
output_d(0b00010000);
delay_ms(150);
output_d(0x00);
delay_ms(150);
}
void allcolson(int){
output_a(0xff);//Enciende
output_b(0xff);//todas
output_c(0xff);//las
output_e(0xff);//columnas
delay_us(1);
}
void allcolsoff(int){
output_a(0x00);//Apaga
output_b(0x00);//todas
output_c(0x00);//las
output_e(0x00);//columnas
delay_us(1);
}
void espiralcuadro(int){
output_a(0b000001);
delay_ms(50);
output_a(0b000011);
delay_ms(50);
output_a(0b000111);
delay_ms(50);
output_a(0b001111);
delay_ms(50);
output_a(0b011111);
delay_ms(50);
output_b(0b00001000);
delay_ms(50);
output_c(0b00000001);
delay_ms(50);
output_c(0b00100001);
delay_ms(50);
output_e(0b100);
delay_ms(50);
output_e(0b110);
delay_ms(50);
output_e(0b111);
delay_ms(50);
output_c(0b10100001);
delay_ms(50);
output_c(0b11100001);
delay_ms(50);
output_c(0b11100011);
delay_ms(50);
output_b(0b00011000);
delay_ms(50);
output_a(0xff);
delay_ms(50);
output_b(0b00011001);
delay_ms(50);
output_b(0b00011011);
delay_ms(50);
output_b(0b00011111);
delay_ms(50);
output_b(0b10011111);
delay_ms(50);
output_c(0b11110011);
delay_ms(50);
output_c(0b11111011);
delay_ms(50);
output_c(0b11111111);
delay_ms(50);
output_c(0b11111111);
delay_ms(50);
output_b(0b10111111);
delay_ms(50);
output_b(0b11111111);
delay_ms(50);
//comienza apagado
output_a(0b111110);
delay_ms(50);
output_a(0b111100);
delay_ms(50);
output_a(0b111000);
delay_ms(50);
output_a(0b110000);
delay_ms(50);
output_a(0b100000);
delay_ms(50);
output_b(0b11110111);
delay_ms(50);
output_c(0b11111110);
delay_ms(50);
output_c(0b11011110);
delay_ms(50);
output_e(0b011);
delay_ms(50);
output_e(0b001);
delay_ms(50);
output_e(0x00);
delay_ms(50);
output_c(0b01011110);
delay_ms(50);
output_c(0b00011110);
delay_ms(50);
output_c(0b00011100);
delay_ms(50);
output_b(0b11100111);
delay_ms(50);
output_a(0x00);
delay_ms(50);
output_b(0b11100110);
delay_ms(50);
output_b(0b11100100);
delay_ms(50);
output_b(0b11100000);
delay_ms(50);
output_b(0b01100000);
delay_ms(50);
output_c(0b000001100);
delay_ms(50);
output_c(0b00000100);
delay_ms(50);
output_c(0x00);
delay_ms(50);
output_b(0b01000000);
delay_ms(50);
output_b(0x00);
}
void rotadordiagonales(int){
for(i=0;i<=40;i++){ //1/8
nivel5on(1);
Output_a(0b00001);
Output_e(0b100);
Delay_ms(1);
allcolsoff(1);            
nivel4on(1);
Output_a(0b000010);
Output_e(0b010);
Delay_ms(1);
allcolsoff(1);                     
nivel3on(1);
Output_a(0b000100);
Output_e(0b001);
Delay_ms(1);
allcolsoff(1);                     
nivel2on(1);
Output_a(0b001000);
Output_c(0b10000000);
Delay_ms(1);
allcolsoff(1);                     
nivel1on(1);
Output_a(0b010000);
Output_c(0b01000000);
Delay_ms(1);
allcolsoff(1);
}
for(i=0;i<=40;i++){ //2/8
nivel5on(1);
Output_a(0b100000);
Output_c(0b00100000);
Delay_ms(1);
allcolsoff(1); 
nivel4on(1);
Output_a(0b00001);
Output_e(0b100);
Delay_ms(1);
allcolsoff(1); 
nivel3on(1);
Output_a(0b000010);
Output_e(0b010);
Delay_ms(1);
allcolsoff(1); 
nivel2on(1);
Output_a(0b000100);
Output_e(0b001);
Delay_ms(1);
allcolsoff(1); 
nivel1on(1);
Output_a(0b001000);
Output_c(0b10000000);
Delay_ms(1);
allcolsoff(1); 
}
for(i=0;i<=40;i++){ //3/8
nivel5on(1);
Output_b(0b00010000);
Output_c(0b00000001);
Delay_ms(1);
allcolsoff(1); 
nivel4on(1);
Output_a(0b100000);
Output_c(0b00100000);
Delay_ms(1);
allcolsoff(1); 
nivel3on(1);
Output_a(0b00001);
Output_e(0b100);
Delay_ms(1);
allcolsoff(1); 
nivel2on(1);
Output_a(0b000010);
Output_e(0b010);
Delay_ms(1);
allcolsoff(1); 
nivel1on(1);
Output_a(0b000100);
Output_e(0b001);
Delay_ms(1);
allcolsoff(1); 
}
for(i=0;i<=40;i++){ //4/8
nivel5on(1);
Output_c(0b00000010);
Output_b(0b00001000);
Delay_ms(1);
allcolsoff(1); 
nivel4on(1);
Output_b(0b00010000);
Output_c(0b00000001);
Delay_ms(1);
allcolsoff(1); 
nivel3on(1);
Output_a(0b100000);
Output_c(0b00100000);
Delay_ms(1);
allcolsoff(1); 
nivel2on(1);
Output_a(0b00001);
Output_e(0b100);
Delay_ms(1);
allcolsoff(1); 
nivel1on(1);
Output_a(0b000010);
Output_e(0b010);
Delay_ms(1);
allcolsoff(1); 
}
for(i=0;i<=40;i++){ //5/8
nivel5on(1);
Output_a(0b010000);
Output_c(0b01000000);
Delay_ms(1);
allcolsoff(1); 
nivel4on(1);
Output_c(0b00000010);
Output_b(0b00001000);
Delay_ms(1);
allcolsoff(1); 
nivel3on(1);
Output_b(0b00010000);
Output_c(0b00000001);
Delay_ms(1);
allcolsoff(1); 
nivel2on(1);
Output_a(0b100000);
Output_c(0b00100000);
Delay_ms(1);
allcolsoff(1); 
nivel1on(1);
Output_a(0b00001);
Output_e(0b100);
Delay_ms(1);
allcolsoff(1); 
}
for(i=0;i<=40;i++){ //6/8
nivel5on(1);
Output_a(0b001000);
Output_c(0b10000000);
Delay_ms(1);
allcolsoff(1);    
nivel4on(1);
Output_a(0b010000);
Output_c(0b01000000);
Delay_ms(1); 
allcolsoff(1); 
nivel3on(1);
Output_c(0b00000010);
Output_b(0b00001000);
Delay_ms(1);
allcolsoff(1); 
nivel2on(1);
Output_b(0b00010000);
Output_c(0b00000001);
Delay_ms(1);
allcolsoff(1); 
nivel1on(1);
Output_a(0b100000);
Output_c(0b00100000);
Delay_ms(1);
allcolsoff(1); 
}
for(i=0;i<=40;i++){ //7/8
nivel5on(1);
Output_a(0b000100);
Output_e(0b001);
Delay_ms(1);
allcolsoff(1);
nivel4on(1);
Output_a(0b001000);
Output_c(0b10000000);
Delay_ms(1);
allcolsoff(1);
nivel3on(1);
Output_a(0b010000);
Output_c(0b01000000);
Delay_ms(1);
allcolsoff(1);
nivel2on(1);
Output_c(0b00000010);
Output_b(0b00001000);
Delay_ms(1);
allcolsoff(1);
nivel1on(1);
Output_b(0b00010000);
Output_c(0b00000001);
Delay_ms(1);
allcolsoff(1);
}
for(i=0;i<=40;i++){ //8/8
nivel5on(1);
Output_a(0b000010);
Output_e(0b010);
Delay_ms(1);
allcolsoff(1);
nivel4on(1);
Output_a(0b000100);
Output_e(0b001);
Delay_ms(1);
allcolsoff(1);
nivel3on(1);
Output_a(0b001000);
Output_c(0b10000000);
Delay_ms(1);
allcolsoff(1);
nivel2on(1);
Output_a(0b010000);
Output_c(0b01000000);
Delay_ms(1);
allcolsoff(1);
nivel1on(1);
Output_c(0b00000010);
Output_b(0b00001000);
Delay_ms(1);
allcolsoff(1);
}
}
void rotadordiagonales2(int){
for(i=0;i<=50;i++){ //1/4
Output_a(0b010001);
Output_c(0b01000000);
Output_e(0b100);
Nivel5on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b101000);
Output_c(0b10100000);
Nivel4on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000100);
Output_b(0b00010000);
Output_c(0b00000001);
Output_e(0b001);
Nivel3on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000010);
Output_b(0b00001000);
Output_c(0b00000010);
Output_e(0b010);
Nivel2on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b010001);
Output_c(0b01000000);
Output_e(0b100);
Nivel1on(1);
Delay_ms(1);
allcolsoff(1);
}
for(i=0;i<=50;i++){ //2/4
Output_a(0b101000);
Output_c(0b10100000);
Nivel5on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000100);
Output_b(0b00010000);
Output_c(0b00000001);
Output_e(0b001);
Nivel4on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000010);
Output_b(0b00001000);
Output_c(0b00000010);
Output_e(0b010);
Nivel3on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b010001);
Output_c(0b01000000);
Output_e(0b100);
Nivel2on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b101000);
Output_c(0b10100000);
Nivel1on(1);
Delay_ms(1);
allcolsoff(1);
}
for(i=0;i<=50;i++){ //3/4
Output_a(0b000100);
Output_b(0b00010000);
Output_c(0b00000001);
Output_e(0b001);
Nivel5on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000010);
Output_b(0b00001000);
Output_c(0b00000010);
Output_e(0b010);
Nivel4on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b010001);
Output_c(0b01000000);
Output_e(0b100);
Nivel3on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b101000);
Output_c(0b10100000);
Nivel2on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000100);
Output_b(0b00010000);
Output_c(0b00000001);
Output_e(0b001);
Nivel1on(1);
Delay_ms(1);
allcolsoff(1);
}
for(i=0;i<=50;i++){ //4/4
Output_a(0b000010);
Output_b(0b00001000);
Output_c(0b00000010);
Output_e(0b010);
Nivel5on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b010001);
Output_c(0b01000000);
Output_e(0b100);
Nivel4on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b101000);
Output_c(0b10100000);
Nivel3on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000100);
Output_b(0b00010000);
Output_c(0b00000001);
Output_e(0b001);
Nivel2on(1);
Delay_ms(1);
allcolsoff(1);
Output_a(0b000010);
Output_b(0b00001000);
Output_c(0b00000010);
Output_e(0b010);
Nivel1on(1);
Delay_ms(1);
allcolsoff(1);
}
}
void cubos1(int){
col1=1;col2=1;col6=1;col7=1;niv1=1;niv2=1;
delay_ms(250);
niv3=1;
niv1=0;
delay_ms(75);
niv4=1;
niv2=0;
delay_ms(75);
niv5=1;
niv3=0;
delay_ms(500);
niv3=1;
niv5=0;
delay_ms(75);
niv2=1;
niv4=0;
delay_ms(75);
niv1=1;
niv3=0;
delay_ms(500);
col1=0;col6=0;
col3=1;col8=1;
delay_ms(75);
col2=0;col7=0;
col4=1;col9=1;
delay_ms(75);
col3=0;col8=0;
col5=1;col10=1;
delay_ms(250);
niv3=1;
niv1=0;
delay_ms(75);
niv4=1;
niv2=0;
delay_ms(75);
niv5=1;
niv3=0;
delay_ms(500);
niv3=1;
niv5=0;
delay_ms(75);
niv2=1;
niv4=0;
delay_ms(75);
niv1=1;
niv3=0;
delay_ms(500);
col4=0;col5=0;
col15=1;col14=1;
delay_ms(75);
col9=0;col10=0;
col20=1;col19=1;
delay_ms(75);
col15=0;col14=0;
col24=1;col25=1;
delay_ms(250);
niv3=1;
niv1=0;
delay_ms(75);
niv4=1;
niv2=0;
delay_ms(75);
niv5=1;
niv3=0;
delay_ms(500);
niv3=1;
niv5=0;
delay_ms(75);
niv2=1;
niv4=0;
delay_ms(75);
niv1=1;
niv3=0;
delay_ms(500);
col20=0;col25=0;
col18=1;col23=1;
delay_ms(75);
col19=0;col24=0;
col17=1;col22=1;
delay_ms(75);
col18=0;col23=0;
col16=1;col21=1;
delay_ms(250);
niv3=1;
niv1=0;
delay_ms(75);
niv4=1;
niv2=0;
delay_ms(75);
niv5=1;
niv3=0;
delay_ms(500);
niv3=1;
niv5=0;
delay_ms(75);
niv2=1;
niv4=0;
delay_ms(75);
niv1=1;
niv3=0;
delay_ms(500);
col21=0;col22=0;
col12=1;col11=1;
delay_ms(75);
col16=0;col17=0;
col6=1;col7=1;
delay_ms(75);
col12=0;col11=0;
col1=col2=1;
delay_ms(75);
}
void cubos2(int){
col1=1;col2=1;col6=1;col7=1;niv1=1;niv2=1;
delay_ms(200);
col3=1;col8=1;col13=1;col11=1;col12=1;niv3=1;
delay_ms(200);
col4=1;col9=1;col14=1;col19=1;col18=1;col17=1;col16=1;niv4=1;
delay_ms(200);
col5=1;col10=1;col15=1;col20=1;col25=1;col24=1;col23=1;col22=1;col21=1;niv5=1;
delay_ms(200);
col5=0;col10=0;col15=0;col20=0;col25=0;col24=0;col23=0;col22=0;col21=0;niv5=0;
delay_ms(200);
col4=0;col9=0;col14=0;col19=0;col18=0;col17=0;col16=0;niv4=0;
delay_ms(200);
col3=0;col8=0;col13=0;col11=0;col12=0;niv3=0;
delay_ms(200);
col3=1;col8=1;col13=1;col11=1;col12=1;niv3=1;
delay_ms(200);
col4=1;col9=1;col14=1;col19=1;col18=1;col17=1;col16=1;niv4=1;
delay_ms(200);
col5=1;col10=1;col15=1;col20=1;col25=1;col24=1;col23=1;col22=1;col21=1;niv5=1;
delay_ms(200);

col1=col2=col3=col4=col5=col6=col11=col16=col21=niv1=0;
delay_ms(200);
col7=col8=col9=col10=col12=col17=col22=niv2=0;
delay_ms(200);
col13=col14=col15=col18=col23=niv3=0;
delay_ms(200);
col13=col14=col15=col18=col23=niv3=1;
delay_ms(200);
col7=col8=col9=col10=col12=col17=col22=niv2=1;
delay_ms(200);
col1=col2=col3=col4=col5=col6=col11=col16=col21=niv1=1;
delay_ms(200);
col1=col2=col3=col4=col5=col6=col11=col16=col21=niv1=0;
delay_ms(200);
col7=col8=col9=col10=col12=col17=col22=niv2=0;
delay_ms(200);
col13=col14=col15=col18=col23=niv3=0;
delay_ms(200);
col13=col14=col15=col18=col23=niv3=1;
delay_ms(200);
col7=col8=col9=col10=col12=col17=col22=niv2=1;
delay_ms(200);
col1=col2=col3=col4=col5=col6=col11=col16=col21=niv1=1;
delay_ms(200);

col1=col2=col3=col4=col5=col6=col10=col11=col15=col20=col16=col21=col22=col23=col24=col25=niv1=niv5=0;
delay_ms(200);
col7=col8=col9=col12=col14=col17=col18=col19=niv2=niv4=0;
delay_ms(200);
col13=niv3=0;
delay_ms(200);
}
Void caer(int){
nivel5on(1);
delay_ms(50);
nivel4on(1);
delay_ms(50);
nivel3on(1);
delay_ms(50);
nivel2on(1);
delay_ms(50);
nivel1on(1);
delay_ms(50);
}
Void subir(int){
nivel1on(1);
delay_ms(50);
nivel2on(1);
delay_ms(50);
nivel3on(1);
delay_ms(50);
nivel4on(1);
delay_ms(50);
nivel5on(1);
delay_ms(50);
}



void main(){      //PROGRAMA PRINCIPAL
set_tris_a(0xff);
set_tris_b(0xff);
set_tris_c(0xff);
set_tris_e(0xff);
set_tris_d(0b00011111);
delay_ms(100);

while (true){        //CICLO INFINITO
allcolson(1);
for(i=0;i<=1;i++){  //niveles uno por uno
allcolson(1);
upslowon(1);
upslowoff(1);
}
allcolsoff(1);
for(a=0;a<=254;a++){  //silueta del cubo
while(i<=254){  
output_a(0x00);//apaga
output_b(0x00);//las
output_c(0x00);//filas
output_d(0x00);//y
output_e(0x00);//columnas
delay_us(1);
output_a(0xff);
output_b(0b00011000);
output_c(0b11100011);
output_e(0b111);
output_d(0b00010001);
delay_ms(5);
output_a(0x00);//apaga
output_b(0x00);//las
output_c(0x00);//filas
output_d(0x00);//y
output_e(0x00);//columnas
delay_us(1);
output_a(0b010001);
output_c(0b01000000);
output_e(0b100);
output_d(0xff);
delay_ms(5);
i++;
}
}
a=0;
for(i=0;i<=254;i++){  //silueta del cubo pequeño
while(a<=254){  
output_a(0x00);//apaga
output_b(0x00);//las
output_c(0x00);//filas
output_d(0x00);//y
output_e(0x00);//columnas
delay_us(1);
output_b(0b10100111);
output_c(0b00011100);
output_d(0b00001010);
delay_ms(5);
output_a(0x00);//apaga
output_b(0x00);//las
output_c(0x00);//filas
output_d(0x00);//y
output_e(0x00);//columnas
delay_us(1);
output_b(0b00000101);
output_c(0b00010100);
output_d(0b00001110);
delay_ms(5);
a++;
}
}
{    //enciende el led del medio
allcolsoff(1);
col13=1;
nivel3on(1);
delay_ms(1500);
}
for(i=0;i<=20;i++){  //aspas giratorias(vista vertical)
output_d(0xff);//enciende todos los niveles
delay_us(1);
output_a(0b000100);
output_b(0b11110010);
output_c(0b00001001);
output_e(0b001);
delay_ms(200);
output_a(0b010001);
output_b(0b01000101);
output_c(0b01010100);
output_e(0b100);
delay_ms(250);
}
output_d(0x00);
delay_ms(500);
{   //Espiral cuadrado
allcolsoff(1);
output_d(0b00000001);
espiralcuadro(1);
output_d(0b00000011);
espiralcuadro(1);
output_d(0b00000111);
espiralcuadro(1);
output_d(0b00001111);
espiralcuadro(1);
output_d(0xff);
espiralcuadro(1);
delay_ms(300);
}
output_d(0x00);
for(a=0;a<=10;a++){  //rotador de diagonales
rotadordiagonales(1);
}
for(a=0;a<=15;a++){  //rotador de diagonales2
rotadordiagonales2(1);
}
for(i=0;i<=1;i++){   //360
output_b(0b01000000);
upslowon(1);
output_b(0b01100000);
delay_ms(50);
output_b(0b01110000);
delay_ms(200);
output_a(0b100000);
delay_ms(50);
output_b(0b01110001);
delay_ms(50);
output_a(0b100001);
delay_ms(50);
output_a(0b100011);
delay_ms(50);
output_a(0b100111);
output_b(0b01110011);
delay_ms(50);
output_a(0b101111);
delay_ms(50);
output_b(0b01110111);
delay_ms(50);
output_a(0xff);
output_b(0b01111111);
delay_ms(50);
output_b(0b01111111);
delay_ms(50);
output_b(0xff);
output_c(0b00000001);
delay_ms(50);
output_c(0b00100001);
delay_ms(50);
output_c(0b00110001);
output_e(0b100);
delay_ms(50);
output_e(0b110);
delay_ms(50);
output_c(0b00111001);
output_e(0xff);
delay_ms(50);
output_c(0b10111001);
delay_ms(50);
output_c(0b11111101);
delay_ms(50);
output_c(0xff);
delay_ms(150);
upslowoff(1);
allcolsoff(1);
delay_ms(500);
}

{allcolsoff(1);   //Caer y Subir
col1=1;
caer(1);
allcolsoff(1);
col2=1;
subir(1);
allcolsoff(1);
col3=1;
caer(1);
allcolsoff(1);
col4=1;
subir(1);
allcolsoff(1);
col5=1;
caer(1);
allcolsoff(1);
col10=1;
subir(1);
allcolsoff(1);
col9=1;
caer(1);
allcolsoff(1);
col8=1;
subir(1);
allcolsoff(1);
col7=1;
caer(1);
allcolsoff(1);
col6=1;
subir(1);
allcolsoff(1);
col11=1;
caer(1);
allcolsoff(1);
col12=1;
subir(1);
allcolsoff(1);
col13=1;
caer(1);
allcolsoff(1);
col14=1;
subir(1);
allcolsoff(1);
col15=1;
caer(1);
allcolsoff(1);
col20=1;
subir(1);
allcolsoff(1);
col19=1;
caer(1);
allcolsoff(1);
col18=1;
subir(1);
allcolsoff(1);
col17=1;
caer(1);
allcolsoff(1);
col16=1;
subir(1);
allcolsoff(1);
col21=1;
caer(1);
allcolsoff(1);
col22=1;
subir(1);
allcolsoff(1);
col23=1;
caer(1);
allcolsoff(1);
col24=1;
subir(1);
allcolsoff(1);
col25=1;
caer(1);
allcolsoff(1);
col4=1;
subir(1);
allcolsoff(1);
col13=1;
caer(1);
allcolsoff(1);
col15=1;
subir(1);
allcolsoff(1);
col1=1;
caer(1);
allcolsoff(1);
col16=1;
subir(1);
allcolsoff(1);
col21=1;
caer(1);
allcolsoff(1);
col25=1;
subir(1);
allcolsoff(1);
col11=1;
caer(1);
allcolsoff(1);
col19=1;
subir(1);
allcolsoff(1);
col3=1;
caer(1);
allcolsoff(1);
col8=1;
subir(1);
allcolsoff(1);
col20=1;
caer(1);
allcolsoff(1);
col7=1;
subir(1);
allcolsoff(1);
col2=1;
caer(1);
allcolsoff(1);
col22=1;
subir(1);
allcolsoff(1);
col12=1;
caer(1);
allcolsoff(1);
col16=1;
subir(1);
allcolsoff(1);
col3=1;
caer(1);
allcolsoff(1);
col24=1;
subir(1);
allcolsoff(1);
col7=1;
caer(1);
allcolsoff(1);
col11=1;
subir(1);
allcolsoff(1);
col5=1;
caer(1);
allcolsoff(1);
col23=1;
subir(1);
allcolsoff(1);
col15=1;
caer(1);
allcolsoff(1);
col6=1;
subir(1);
}

cubos1(1);
output_d(0x00);
cubos2(1);
output_d(0x00);

col1=col5=col21=col25=1;
upslowon(1);
col11=col15=col3=col23=1;
delay_ms(250);
col8=col18=col12=col14=1;
delay_ms(170);
allcolson(1);
for(i=0;i<=10;i++){
output_d(0xff);
delay_ms(50);
output_d(0x00);
delay_ms(50);
}
}
}
 
Atrás
Arriba