This shows you the differences between two versions of the page.
pm:prj2024:ccontasel:andreea.alexandru02 [2024/05/26 23:31] 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 125: | Line 125: | ||
* LED control: Funcții pentru activarea și dezactivarea LED-ului în diferite stări ale jocului (la startul jocului, la colectarea unui pickup verde, respectiv roșu).\\ | * LED control: Funcții pentru activarea și dezactivarea LED-ului în diferite stări ale jocului (la startul jocului, la colectarea unui pickup verde, respectiv roșu).\\ | ||
</note> | </note> | ||
+ | |||
+ | |||
+ | <note tip> | ||
+ | **Concepte Software folosite:**\\ | ||
+ | **-> 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.\\ | ||
+ | |||
+ | **-> 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.\\ | ||
+ | |||
+ | **-> 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.\\ | ||
+ | |||
+ | **-> 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.\\ | ||
+ | |||
+ | **-> 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> | ||
+ | |||
===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
Line 131: | Line 151: | ||
În urma realizării proiectului, am obținut următoarele rezultate:\\ | Î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.\\ | -> 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ă. | + | -> 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. | + | -> 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.\\ | -> 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.\\ | -> 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.\\ | -> 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ă.\\ \\ | + | În concluzie, proiectul a atins obiectivele propuse, oferind o experiență de joc atractivă.\\ \\ |
**Demo** -> {{:pm:prj2024:ccontasel:pong_revolution_demo.zip|}} | **Demo** -> {{:pm:prj2024:ccontasel:pong_revolution_demo.zip|}} |