Proiectul reprezinta un cub format din leduri de latura 4 (64 de leduri) controlate de micro-controller-ul Atmel Atmega16. Scopul proiectului este de a afisa animatii 3D prin intermediul cubului de leduri. Animatiile vor fi preluate direct din codul scris sau de pe un card SD.
Am ales acest proiect pentru ca am vazut cateva modele functionale de astfel de cuburi si am decis sa incerc si eu.
Utilitate: Proiectul este unul pur decorativ si distractiv.
Cubul va fi controlat de microcontroler-ul Atmega16. Cu ajutorul interfetei USB voi programa microcontroler-ul. Cubul are 4 nivele orizontale(16 led-uri pe nivel) si un mod de adresare realizat prin specificarea liniei verticale si a planului orizontal caruia ii apartine fiecare led. Cubul este legat direct la pinii microcontroler-ului astfel: 16 coloane a cate 4 leduri (anodul), si 4 nivele a cate 16 leduri (cadodul), practic este nevoie de 20 de pini disponibili din partea lui Atmega16.
Schema bloc este urmatoarea:
Lista de pieste utilizate:
Schema de functionare
Cubul a fost construit pe coloane. Pentru a ansambla cubul am legat cele 16 coloane una de alta, pe niveluri. Am folosit ULN2003A intrucat se comporta ca un set de tranzistori NPN. Acesta nu permite ca intensitati mari ale curentului ce vin dinspre cub sa ajunga la microcontroler. Card-ul SD l-am legat conform specificatiilor din laborator, folosind schema urmatoare:
Programarea microcontrolerului o voi face folosind programul WinAvr in limbajul C/C++. Memorarea cubului se face într-o matrice 2D de tipul volatile unsigned char cube[4][4](pentru a putea fi folosit in functia de intreruperi).
Codul este scris in 4 fisiere C: main.c, effect.c, draw.c si frames.c. In main.c se gasesc functiile: ioinit ( initializeaza porturile I/O), bootmsg (clipirea becurilor pentru a indica boot sau reboot), delay_ms si launch_effect (incarcarea efectelor). In fisierul effect.c sunt definite toate animatiile cubului, iar in fisierul draw.c sunt functiile geometrice.
Acest proiect a fost unul interesant si placut. Am realizat un obiect ce poate fi extins cu alte functionalitati si animatii. In cadrul acestui proiect am acumulat cateva cunostinte noi despre hardware si electronica. Rezultatul arata bine.