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|}} | ||