This shows you the differences between two versions of the page.
pm:prj2023:drtranca:vladut_stefan.riciu [2023/05/06 13:14] vladut_stefan.riciu |
pm:prj2023:drtranca:vladut_stefan.riciu [2023/05/29 11:28] (current) vladut_stefan.riciu [Download] |
||
---|---|---|---|
Line 30: | Line 30: | ||
* Soclu DIP28 | * Soclu DIP28 | ||
* 4x Butoane | * 4x Butoane | ||
- | * 2x Matrice de 8x8 LED-uri interfatate prin shift registers | + | * 2x Matrice de 8x8 LED-uri interfatate prin shift registers ([[https://www.robofun.ro/componente/matrice-de-led-uri-8x8-inlantuibila.html|detalii aici]]) UPDATE: Am ars cele 2 matrice de LED-uri, in locul lor am folosit alte 2 matrice de LED-uri facute manual de mine acum cativa ani. Functionalitatea lor este asemanatoare cu cele anterioare, putin diferita, insa, datorita vechimiii lor, nu mai am schemele hardware. |
* Modul cititor card SD | * Modul cititor card SD | ||
* Card SD 4GB | * Card SD 4GB | ||
* Difuzor 8Ω 1.5W | * Difuzor 8Ω 1.5W | ||
* Amplificator difuzor | * Amplificator difuzor | ||
- | <note tip> | + | * Diverse rezistente + condensatori |
- | Aici puneţi tot ce ţine de hardware design: | + | * Alimentator AC -> DC 12V |
- | * listă de piese | + | * Divizor de tensiune +12V -> +5V |
- | * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri, e.g. http://www.captain.at/electronic-atmega16-mmc-schematic.png) | + | |
- | * diagrame de semnal | + | |
- | * rezultatele simulării | + | |
- | </note> | + | |
+ | {{pm:prj2023:drtranca:project_photo.jpeg?750x975}} | ||
+ | {{pm:prj2023:drtranca:schema_hardware.png?750x520}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
+ | === Mediu de dezvoltare === | ||
+ | * VSCode + Platformio extension, pentru scris codul; | ||
+ | * Arduino IDE cu 'Arduino as ISP' si 'ATMEGA328 on a breadboard' pentru incarcat codul in microcontroller; | ||
+ | * Un Arduino UNO cu microcontroller-ul scos, folosit ca un programmer; | ||
+ | * Din cauza faptului ca folosesc ATMEGA328, iar hardware specs pentru 'ATMEGA328 on a breadboard' se bazeaza pe ATMEGA328P, a fost necesara schimbarea unui octet in fisierul cu semnatura hardware a microcontrollerului pentru incarcarea bootloader-ului. | ||
- | <note tip> | + | === Module Software === |
- | Descrierea codului aplicaţiei (firmware): | + | * Pentru afisarea pe matricele de LED-uri am folosit un vector de 16 octeti care sunt shiftati in registre. Din cauza faptului ca LED-urile sunt cu anod (sau catod? nu mai stiu, vezi UPDATE la componente) comun, nu se pot aprinde individual. Astfel, afisarea functioneaza similar cu afisarea pe un monitor cu "refresh rate", adica se aprind succesiv cele 16 linii de cate 8 LED-uri. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Pentru mentinerea starii pieselor de tetris a fost folosita o matrice de dimensiunea ecranului pe care sunt efectuate calculele logice (rotit / miscat piesa). Inainte de afisare, ecranul logic se translateaza la ecranul de octeti; |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Pentru redat muzica de tetris de pe card SD pe difuzor, am folosit un timer la 8000 Hz (0.125ms) si fast PWM. Exista un buffer de 512 octeti in care este tinuta urmatoare secventa din melodie (fisier .wav monocanal, 8000Hz, 8 bits rezolutie). In cadrul intreruperii de timer, urmatorul octet este pus in registrul PWM, iar daca bufferul a fost epuizat, se citeste urmatorul sector de 512B de pe card. Citirea este suficient de rapida si nu se pune problema blocarii codului care executa logica jocului. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
- | * (etapa 3) surse şi funcţii implementate | + | |
- | </note> | + | |
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
- | + | Un joc de Mini-Tetris distractiv si o experienta educationala frumoasa. | |
- | <note tip> | + | Jocul merge bine, sunt unele probleme la afisare (scade intensitatea LED-urilor) atunci cand sunt prea multe instructiuni de executat intre afisari (e.g. intrerupere + citit de pe card + prelucrat logica joc si apoi afisare). |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | |
- | </note> | + | |
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | In configuratia curenta, ATMEGA328 nu este suficient de rapid pentru citirea de pe card si afisarea pe display in cadrul intreruperilor. Ma gandesc ca o posibila solutie ar fi realizarea citirii de pe card prin SPI manual, cu registre, asincron si realizarea shiftarii pe ecran cu cate o coloana (sau linie) pe intrerupere. | ||
===== Download ===== | ===== Download ===== | ||
- | <note warning> | + | {{pm:prj2023:drtranca:riciu_vladut_stefan_333cb_cod.zip}} |
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | + | |
- | + | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | |
- | </note> | + | |
- | ===== Jurnal ===== | ||
- | <note tip> | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
- | </note> | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
- | <note> | + | * DataSheet ATMEGA328 |
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | * https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoToBreadboard |
- | </note> | + | * https://fabacademy.org/archives/2013/students/anderson.douglas/atmega328.html |
<html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||