Proiectul consta in construirea unui cub de leduri si crearea de animatii pe acesta. Am considerat ca este un proiect interesant si am dorit sa il fac mai dificil prin marirea laturii cubului.
Cubul va fi animat prin aprinderea succesiva a straturilor orizontale, creand un efect de aprindere permananta daca succesiunea este rapida.
Initial am dorit folosirea de multiplexoare pentru accesarea fiecarui led dintr-un strat, dar am optat pentru un Shift-Register pentru ca era mai usor de folosit. Pentru aprinderea staturilor am folosit o matrice de tranzistori.
Componente
216 leduri x 0.25ron
6 Shift Register x 2ron SN54HC595
1 Darlington Sink Driver x 7ron ULN2003APG
36 rezistente 100ohm ~ 3 ron toate
7 socluri
pini mama si tata ~ 30 ron
banda de fire ~ 7ron
placuta de laborator ~ 50 ron
multe alte componente care au aparut pe parcurs
Total: ~ 200 lei
Se putea mai ieftin daca nu intampinam erori, in final cred ca merita.
Hardware
Am construit 6 straturi de 36 de leduri cu catodul comun.
Am unit aceste straturi pe coloane unind anodurile.
Am legat fiecare catod la o intarare a ULN2003APG
Fiecare coloana comuna va intra in o intrare a unui SN54HC595, am optat ca fiecare registru sa corespunda unei linii
SN54HC595 au VCC, GND, (RCLK si SRCLK comune) si OE comune
Din microcontroller merge cate un fir separat in fiecare SER de pe fiecare registru
ULN2003APG are iesirea GND legata la ground
Pe iesirile registrilor am legat cate o rezistenta de 100ohm
int main(){//Setez Porturile A si C pe iesire
DDRA =0xFF;
DDRC =0xFF;
PORTA =0;
PORTC =0;int y = PA0;int z = PC0;//Dezactivez iesirile shiterelor
PORTA |=(1<<PA6);//Aprind prima linie din primul strat
PORTA |=(1<<PA0);
PORTC |=(1<<PC0);int t =0, u=0;while(1){//Dau o bataie de ceas
PORTA |=(1<<PA7);//delay_ms(1);
PORTA &= ~(1<<PA7);//Pentru a aprinde fiecare led de pe o linie diferit, aici ar trebui modificata valoarea pinului corespunzator linieiif(t==8){
t =0;//Activez iesirea
PORTA &= ~(1<<PA6);
delay_ms(4);
PORTA |=(1<<PA6);//Modific startul
PORTC &= ~(1<<z);
z++;if(z - PC0 ==6){
z = PC0;if(u==8){//Modific linia
u=0;
PORTA &= ~(1<<y);
y++;if(y-PA0 ==6){
y = PA0;}
PORTA |=(1<<y);}
u++;}
PORTC |=(1<<z);}
t++;}return0;}
Implementare
Primul pas a fost crearea unei matrite gaurind o matrice de 6×6 in o placa de lemn
Sfat: departati cat mai mult gaurile pentru a fi cubul cat mai mare
Nu sperati sa va iasa din prima, e destul de greu, eu am reusit sa termin un patrat perfect din a 3-a incercare
Am indoit piciorusele ledurilor astfel incat dupa ce voi finaliza lipiturile unui strat sa il pot lega de cele vecine
Am lipit catodurile ledurilor de pe un start si am adaugat o sarma la unul din capete pentru a ii oferi mai multa rezistenta
Primul strat a luat cateva zeci de minute, restul au mers ceva mai repede, nu este cea mai amuzanta parte a proiectului
Dupa ce am obtinut 6 straturi de care 36 de leudri a trebuit sa le leg intre ele, mi-am format un suport din sarma care sa sustina unul din straturi deasupra celuilalt in timp de lipsec, dupa care am cerut ajutorul colegilor sa ma ajute
Nu incercati sa sustineti cu mana, frige!
Dupa conectarea cubului l-am prins pe placa si am lipit si restul de piese si legaturile dintre ele: destul de multe fire, multe fire comune pe care m-asm straduit sa le leg cat am putut eu de bine sa nu incomodeze
Ar fi ajutat mai mult daca anticipam toate firele si pozitionam mai bine soclurile pentru uln si siftere, dar nu e mult de munca pentru dezlipirea unuia lipit gresit
Rezultat
Inainte de a avea rezultatul final a trebuit sa repar o serie de probleme aparute, cele mai multe provenind din necitirea cu atentie a documentatiei.
Atentie la notatii si la valoarea semnalelor pentru care ar trebui sa se intample anumite salvari, de exemplu, eu am nu am vazut ca pinul de resetare al shiterelor este activat atunci cand nu este tensiune aplicata si il lasasem in aer, mi-a dat destul dem ult de cap lucrul acesta. Alta eroare intampinata a fost la microcontroller unde nu am fost atent si foloseam ultimii 6 pini ai portului C in loc de primii si nu mi se aprindeau corect straturile.
Scurt-circuiturile au fost ceva clasic, mai ales cand ma gandesc la cate fire se suprapuneau si, chiar daca aveau camasa, s-a topit si s-au unit.
Concluzii
Usor de construit
Greu de depanat, putina organizare in fire ar fi fost de ajutor
Urmeaza 8x8x8 cu leduri mai bune
Ar fi iesit mai bine daca foloseam leduri transparente care se aprind rosu, ultra bright stuff, care sunt destul de scumpe
Voi mai lucra la animatii
Il consider un trofeu personal, mai ales dupa cat timp am investit