This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:andreea.alexandru02 [2024/05/26 23:29] andreea.alexandru02 [Rezultate Obţinute] |
pm:prj2024:ccontasel:andreea.alexandru02 [2024/05/27 14:09] (current) andreea.alexandru02 [Software Design] |
||
---|---|---|---|
Line 20: | Line 20: | ||
== Descriere sumară mod de funcționare == | == Descriere sumară mod de funcționare == | ||
<note tip> | <note tip> | ||
- | Jocul implementat „Pong Revolition” funcționează după următorul mecanism de bază: jucătorii controlează fiecare o paletă pe tabla de joc și trebuie să lovească pucul pentru a-l trimite către adversar, scopul fiind marcarea punctelor prin trecerea pucului pe cealaltă parte a tablei de joc fără ca adversarul să-l returneze. Pe măsură ce jocul progresează, power-up-uri aleatorii apar pe tabla de joc. Acestea oferă avantaje sau dezavantaje temporare, modificând dinamica jocului. Pentru a captura un power-up jucătorul trebuie să își coordoneze mișcările astfel încât pucul sa intre în contact cu simbolul acestuia, activându-se automat. Mișcările vor fi ghidate prin utilizarea unui joystick care permite mișcări sus/jos, stânga/dreapta pe un anumit perimetru.\\ | + | Jocul implementat „Pong Revolution” funcționează după următorul mecanism de bază: jucătorii controlează fiecare o paletă pe tabla de joc și trebuie să lovească pucul pentru a-l trimite către adversar, scopul fiind marcarea punctelor prin trecerea pucului pe cealaltă parte a tablei de joc fără ca adversarul să-l returneze. Pe măsură ce jocul progresează, power-up-uri aleatorii apar pe tabla de joc. Acestea oferă avantaje sau dezavantaje temporare, modificând dinamica jocului. Pentru a captura un power-up jucătorul trebuie să își coordoneze mișcările astfel încât pucul sa intre în contact cu simbolul acestuia, activându-se automat. Mișcările vor fi ghidate prin utilizarea unui joystick care permite mișcări sus/jos, stânga/dreapta pe un anumit perimetru.\\ |
Jocul se va încheia fie când un jucător atinge un anumit număr de puncte, fie când timer-ul expiră.\\ | Jocul se va încheia fie când un jucător atinge un anumit număr de puncte, fie când timer-ul expiră.\\ | ||
De asemenea, jocul va interacționa în mod activ cu jucătorii prin lumini, sunete de victorie/înfrângere, intervenții sonore redate de pe un card SD. | De asemenea, jocul va interacționa în mod activ cu jucătorii prin lumini, sunete de victorie/înfrângere, intervenții sonore redate de pe un card SD. | ||
Line 126: | Line 126: | ||
</note> | </note> | ||
- | ===== Rezultate Obţinute ===== | ||
<note tip> | <note tip> | ||
- | În urma realizării proiectului, am obținut următoarele rezultate: | + | **Concepte Software folosite:**\\ |
- | **Funcționarea Jocului:** Am reușit implementez o variantă a jocului Pong pe display-ul TFT controlat de Arduino UNO.\\ | + | **-> ADC (Analog-to-Digital Converter)**:\\ |
+ | Citirea joystick-urilor: Valorile analogice de la joystick-uri sunt citite folosind pinii ADC ai Arduino (PLAYER1_X, PLAYER1_Y, PLAYER2_X, PLAYER2_Y). Aceste valori sunt convertite în semnale digitale pentru a controla mișcarea paletelor.\\ | ||
- | **Interfața Utilizator:** Am dezvoltat o interfață grafică intuitivă pe display-ul TFT, utilizând librăriile Adafruit GFX și ST7735. Ecranul afișează clar mișcarea paletelor, mingii și scorul curent. De asemenea, am inclus mesaje de start și final de joc pentru o experiență utilizator îmbunătățită. | + | **-> SPI (Serial Peripheral Interface)**:\\ |
+ | Controlul display-ului TFT: Display-ul TFT este controlat prin protocolul SPI folosind librăriile Adafruit_GFX și Adafruit_ST7735. Pinii TFT_CS, TFT_DC, și TFT_RST sunt folosiți pentru comunicarea SPI cu display-ul.\\ | ||
- | **Controlul Joystick-ului:** Am dezvoltat algoritmi pentru citirea valorilor analogice de la joystick-uri și controlul paletelor, oferind o reacție rapidă și precisă la mișcările jucătorilor. | + | **-> GPIO (General Purpose Input/Output)**:\\ |
+ | Controlul LED-urilor: LED-urile sunt controlate folosind pini GPIO. De exemplu, pinul LED_PIN, LED_GREEN_PIN și LED_RED_PIN sunt definiți și utilizați pentru a indica diferite stări ale jocului.\\ | ||
- | **Feedback Audio și Vizual:** Implementarea buzzer-ului pentru semnalizarea evenimentelor de joc (cum ar fi coliziunea mingii sau punctarea unui gol) și a LED-urilor pentru indicarea stării jocului au adăugat un nivel suplimentar de interactivitate și feedback în timp real pentru jucători.\\ | + | **-> Timere:**\\ |
+ | Gestionarea pickup-urilor: Timer-ele sunt utilizate pentru a gestiona apariția și dispariția pickup-urilor pe ecran (PICKUP_APPEAR_INTERVAL, PICKUP_TIMEDOUT). Funcția millis() este folosită pentru a măsura timpul scurs și a declanșa evenimente la intervale regulate.\\ | ||
- | **Gestionarea Pickup-urilor:** Am adăugat o funcționalitate de "pickup-uri" care apar aleator pe ecran, oferind bonusuri sau penalizări jucătorilor.\\ | + | **-> PWM (Pulse Width Modulation):**\\ |
+ | Controlul Buzzer-ului: Funcția tone() folosită pentru controlul buzzer-ului utilizează PWM pentru a genera sunetele necesare în timpul jocului. | ||
+ | </note> | ||
- | **Documentare și Modularitate:** Codul a fost bine documentat, iar funcțiile implementate au fost structurate modular, facilitând astfel înțelegerea și posibilele îmbunătățiri viitoare ale proiectului.\\ | ||
- | În concluzie, proiectul nostru a atins obiectivele propuse, oferind o experiență de joc atractivă.\\ | + | ===== Rezultate Obţinute ===== |
+ | |||
+ | <note tip> | ||
+ | În urma realizării proiectului, am obținut următoarele rezultate:\\ | ||
+ | -> Funcționarea Jocului: Am reușit implementez o variantă a jocului Pong pe display-ul TFT controlat de Arduino UNO.\\ | ||
+ | -> Interfața Utilizator: Am dezvoltat o interfață grafică intuitivă pe display-ul TFT, utilizând bibliotecile Adafruit GFX și ST7735. Ecranul afișează clar mișcarea paletelor, mingii și scorul curent. De asemenea, am inclus mesaje de start și final de joc pentru o experiență utilizator îmbunătățită.\\ | ||
+ | -> Controlul Joystick-ului: Am dezvoltat algoritmi pentru citirea valorilor analogice de la joystick-uri și controlul paletelor, oferind o reacție rapidă și precisă la mișcările jucătorilor.\\ | ||
+ | -> Feedback Audio și Vizual: Implementarea buzzer-ului pentru semnalizarea evenimentelor de joc (cum ar fi coliziunea mingii sau punctarea unui gol) și a LED-urilor pentru indicarea stării jocului au adăugat un nivel suplimentar de interactivitate și feedback în timp real pentru jucători.\\ | ||
+ | -> Gestionarea Pickup-urilor: Am adăugat o funcționalitate de "pickup-uri" care apar aleator pe ecran, oferind bonusuri sau penalizări jucătorilor.\\ | ||
+ | -> Documentare și Modularitate: Codul a fost bine documentat, iar funcțiile implementate au fost structurate modular, facilitând astfel înțelegerea și posibilele îmbunătățiri viitoare ale proiectului.\\ | ||
+ | |||
+ | În concluzie, proiectul a atins obiectivele propuse, oferind o experiență de joc atractivă.\\ \\ | ||
- | {{:pm:prj2024:ccontasel:pong_revolution_demo.zip|}} | + | **Demo** -> {{:pm:prj2024:ccontasel:pong_revolution_demo.zip|}} |
</note> | </note> | ||