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.
Total: ~ 200 lei
Se putea mai ieftin daca nu intampinam erori, in final cred ca merita.
Conexiuni hardware-microcontroller:
Un cod simplu:
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 liniei if (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++; } return 0; }
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.