This shows you the differences between two versions of the page.
pm:prj2025:atoader:catalin.giuglan [2025/05/28 02:56] catalin.giuglan [Rezultate Obţinute] |
pm:prj2025:atoader:catalin.giuglan [2025/05/28 16:00] (current) catalin.giuglan [Implementarea Hardware:] |
||
---|---|---|---|
Line 52: | Line 52: | ||
</note> | </note> | ||
- | ====== Implementarea Hardware: ====== | + | {{:pm:prj2025:atoader:catalin_pong.jpg?650|}}====== Implementarea Hardware: ====== |
- | {{:pm:prj2025:atoader:catalin_pong.jpg?650|}} | ||
===== Software Design ===== | ===== Software Design ===== | ||
<note tip> | <note tip> | ||
- | Descrierea codului aplicaţiei (firmware): | + | **IDE folosit:** |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | *Am folosit **ArduinoIDE** pentru a implementa software-ul. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | **Biblioteci utilizate:** |
- | * (etapa 3) surse şi funcţii implementate | + | *Wire.h |
+ | *SPI.h | ||
+ | *U8g2lib.h | ||
+ | *SdFat.h | ||
+ | |||
+ | **Funcții:** | ||
+ | |||
+ | *void setup() - Inițializează componentele hardware, verifică fișierul muzical de pe SD și calibrează joystick-urile. | ||
+ | *void loop() - Gestionează logica jocului, redă muzica și actualizează ecranul și pozițiile elementelor în mod continuu. | ||
+ | *void drawFrame() - Desenează întreaga scenă de joc: terenul, scorul, mingea și playerii. | ||
+ | *void resetGame() - Plasează mingea într-o poziție aleatorie și îi setează o direcție nouă de mișcare. | ||
+ | *void drawCourt() - Desenează cadrul terenului de joc pe afișaj (un dreptunghi de 128x64 pixeli). | ||
+ | *void drawScore() - Afișează scorurile celor doi jucători pe ecran. | ||
+ | *void gameOver() - Afișează ecranul de final și anunță jucătorul câștigător, apoi resetează scorurile și mingea. | ||
+ | *void updateBallPosition() - Calculează noua poziție a mingii și gestionează coliziunile cu pereții, playerii și dacă s-a marcat sau nu un punct. | ||
+ | *void updatePaddlePositions() - Citește pozițiile joystick-urilor și actualizează paletele în funcție de mișcare. | ||
+ | *void constrainPaddlePosition(uint8_t &paddle_y) - Asigură că playerul nu iese în afara ecranului. | ||
+ | *void soundBounce() - Redă un sunet scurt când mingea lovește un player sau marginea orizontală. | ||
+ | *void soundPoint() - Redă un sunet diferit când se marchează un punct. | ||
+ | *void initMusic() - Deschide fișierul mario.txt de pe cardul SD dacă nu a fost deja deschis. | ||
+ | *void playMarioTheme() - Redă notele muzicale din fișierul mario.txt, una câte una. | ||
</note> | </note> | ||
Line 81: | Line 101: | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | <note tip> | ||
+ | Acesta a fost primul proiect hardware pe care l-am realizat și pot spune că mi-a făcut deosebită plăcere să lucrez la el. Consider că, în ciuda timpului investit în finalizarea acestui proiect, satisfacția de la final merită pe deplin orele petrecute experimentând și învățând să folosesc Arduino. | ||
+ | |||
+ | Sunt mândru că am reușit să implementez acest proiect, rezultând într-un joc simplu dar captivant! | ||
+ | </note> | ||
===== Download ===== | ===== Download ===== | ||
<note warning> | <note warning> | ||
- | 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ă ;-). | + | Arhiva conține codul Arduino și videoclipul demo de prezentare al proiectului: {{:pm:prj2025:atoader:pong.zip|}} |
- | + | ||
- | 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> | </note> | ||
- | |||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 98: | Line 120: | ||
<note> | <note> | ||
- | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | + | *[[https://www.optimusdigital.ro/|Optimus Digital]] |
+ | *[[https://www.emag.ro/|Emag]] | ||
+ | *[[https://www.tinkercad.com/|Tinkercad]] | ||
</note> | </note> | ||
<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> | ||