This shows you the differences between two versions of the page.
pm:prj2025:atoader:catalin.giuglan [2025/05/28 03:08] catalin.giuglan [Bibliografie/Resurse] |
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 89: | Line 109: | ||
<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 ===== | ||