Proiectul urmăreşte realizarea unui display tridimensional format din 64 de leduri. Cubul este format din 4 nivele, fiecare conţinând 16 leduri albe. Fiecare led din cele 64 va putea fi controlat individual pentru a crea efecte şi animaţii 3D. Ledurile vor fi controlate cu ajutorul microcontroller-ului Atmel AT Mega 16 folosit la etapa I. Deoarce AT Mega 16 nu are destui pini pentru a putea controla individual fiecare led va trebui să găsim o soluţie pentru a putea face acest lucru.
Controlul individual al celor 64 de leduri fără a avea nevoie pentru fiecare led de câte două fire se realizează prin multiplexare. Multiplexarea este un proces în care mai multe semnale analogice sau fluxuri de date digitale sunt combinate într-un semnal pe un mediu comun.
În acest fel pot controla toate cele 64 de leduri individual la un anumit moment de timp, folosind doar 16 fire de legătură, implicit doar 16 pini ai microcontrollerului. Alte 4 fire respectiv pini vor fi folosite pentru a controla fiecare, un tranzistor.
Soluţia aleasă este următoarea:
De reţinut este faptul că fiecare ieşire a microprocesorului furnizează 5V. Pentru aputea aprinde corect ledurile am ales pentru fiecare (coloană) o rezistenţă de 220Ω . Pentru a putea controla bază tranzistoarelor, am folosit câte un rezistor de 1,5KΩ.
Componente | Nr. Bucăți |
---|---|
Leduri superluminoase | 64 |
Rezistențe 220Ω | 16 |
Tranzistori BC336-16 | 4 |
Rezistenţe 1.5KΩ | 4 |
Plăcuţă de test | 1 |
Bandă conductoare | 1m |
Barete tată | 2 |
Codul conţine fişierele C:
main.c /** fișierul principal */ effect.c /** animaţiile care vor apărea când cubul este pus în funcţiune */ draw.c /** definite funcţii geometrice */ frames.c. /** cele 6 frame-uri ale unei linii care se deplasează în jurul centrului cubului */
Proiectul este funcţional atât hardware cât şi software. Construcţia fizică a cubului a ridicat unele probleme întrucât a trebuit să lipesc 64 de leduri între ele într-o structură cubică, ca în imagini. Spaţiul dintre nivele fiind foarte limitat am întâlnit unele dificultăţi în a ajunge cu letcon-ul în unele locuri.
În urma acestui proiect am constatat că:
Per total proiectul a meritat efortul depus, dar aveţi grijă să vă apucaţi din timp de lipit. Mie personal mi-a luat cam >15ore cu tot cu debug.
Programarea microcontrelerului am realizat-o cu ajutorul programului WinAvr, care include compilatorul GNU GCC pentru limbajele C şi C++.
Partea de software este bazată pe codul scris de Christian Moen. Codul a fost adaptat pentru a funcţiona pe hardware-ul descris mai sus.
Codul folosit este accesibil aici : morozanion.zip