Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:sseverin:andrei.napruiu [2024/04/28 16:33]
andrei.napruiu [Funcționarea sistemului de joc:]
pm:prj2024:sseverin:andrei.napruiu [2024/05/28 20:29] (current)
andrei.napruiu [Rezultate Obţinute]
Line 33: Line 33:
 {{ :​pm:​prj2024:​sseverin:​napruiuandrei.png?​750 |}} {{ :​pm:​prj2024:​sseverin:​napruiuandrei.png?​750 |}}
 ===== Hardware Design ===== ===== Hardware Design =====
 +
 +Lista componente:
 +
 +^ Nume componentă ​                        ^ Cantitate ^
 +| Arduino UNO (echivalent ATMega328P) ​    | 1         |
 +| Buzzer ​                                 | 1         |
 +| Joystick Analog ​                        | 2         |
 +| Display LCD (I2C)                       | 1         |
 +| Breadboard ​                             | 1         |
 +| LED (diverse culori) ​                   | 1/2       |
 +| Rezistor (diverse valori) ​              | 1/2       |
 +| Cabluri ​                                | nelimitat |
 +
 +Cum arată până acum:
 +{{ :​pm:​prj2024:​sseverin:​hardware-napruiu.jpeg?​750 |}}
 +
 +Modelul sistemului (cu componente vizibile):
 +
 +{{ :​pm:​prj2024:​sseverin:​model-napruiu.jpeg?​750 |}}
 +----
 +
 +Schematicul sistemului:
 +
 +{{ :​pm:​prj2024:​sseverin:​schematic-napruiu.jpeg?​750 |}}
  
 <note tip> <note tip>
-Aici puneţi tot ce ţine de hardware design: +  ​Am utilizat potențiometre în locul joystick-urilor analogice din cadrul ambelor ​scheme, ​deoarece nu am putut găsi online un model care să se potrivească
-  * listă de piese +  * Urmează să construiesc din carton (sau orice material mai accesibil) o carcasă pentru a putea juca fără posibilitatea ​de a deconecta cablurile.
-  ​* scheme ​electrice (se pot lua şi de pe Internet şi din datasheet-urie.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame ​de semnal  +
-  * rezultatele simulării+
 </​note>​ </​note>​
  
 ===== Software Design ===== ===== Software Design =====
  
 +==== Descrierea codului aplicației ====
  
-<note tip> +  * **Mediu de dezvoltare**
-Descrierea codului aplicaţiei (firmware)+  ​Pentru dezvoltarea acestui proiect, a fost utilizat ​mediu de dezvoltare ​Arduino IDEAcesta oferă un mediu prietenos șușor de utilizat pentru programarea microcontrolerelor din familia Atmega.
-  ​mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şsurse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+  * **Librării și surse 3rd-party**:​ 
 +  Au fost utilizate următoarele librării:​ 
 +     - **Wire.h**: pentru comunicarea I2C între Arduino și display-ul LCD. 
 +     - **LiquidCrystal_I2C.h**:​ pentru gestionarea și controlul display-ului LCD I2C.
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
-===== Concluzii =====+  * **Algoritmi și structuri pe care plănuiesc să le implementez**:​ 
 +  Algoritmii principali includ: 
 +    - Controlul mingii în jocul Pong, incluzând detectarea coliziunilor cu pereții și paletele. 
 +    - Actualizarea scorurilor și afișarea acestora pe display. 
 +    - Detectarea intrărilor analogice de la joystick-uri pentru controlul paletelor.
  
-===== Download =====+  - **Surse și funcții implementate**:​ 
 +    - Inițializarea și configurarea display-ului LCD I2C. 
 +    - Implementarea funcției de desenare a terenului de joc și a scorului. 
 +    - Controlul mișcării mingii și detectarea coliziunilor. 
 +    - Implementarea sunetelor pentru diferite evenimente în joc (coliziuni și puncte).
  
-<note warning>​ +==== Stadiul actual al implementării software ====
-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ă ;-).+
  
-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**. +Codul sursă: [[https://github.com/​andreinapruiu/​Pong-Game-Arduino|GitHub Link]]
-</​note>​+
  
-===== Jurnal ​=====+=== Funcții create și utilizate ​==
 + 
 +1. **setup** - Inițializează afișajele LCD, setează modurile pinurilor pentru butoane, LED-uri și buzzer, creează caracterul personalizat al mingii și pregătește jocul pentru selecția inițială a modului și pornirea jocului. 
 + 
 +2. **loop** - Bucla principală a jocului care gestionează mișcarea mingii, mișcarea paletelor, actualizarea scorului și apelarea funcției `drawScore` când este necesară o actualizare. 
 + 
 +3. **drawScore** - Actualizează scorurile, cronometrul și rundele câștigate pe cel de-al doilea afișaj LCD, asigurându-se că doar părțile necesare sunt actualizate pentru a evita pâlpâirea. 
 + 
 +4. **showStartMessage** - Afișează mesajul de pornire pe primul afișaj LCD pentru a informa jucătorii că jocul este gata de jucat. 
 + 
 +5. **showBallPossession** - Afișează un mesaj care indică ce jucător deține mingea la începutul rundei. 
 + 
 +6. **ledShowAndPlayMelody** - Aprinde LED-urile și redă o melodie folosind buzzer-ul când un jucător câștigă o rundă sau un joc. 
 + 
 +7. **waitForRestart** - Afișează un mesaj care solicită jucătorilor să apese un buton pentru a începe o nouă rundă. Așteaptă până când butonul este apăsat. 
 + 
 +8. **resetRound** - Resetează scorurile pentru runda curentă și pregătește jocul pentru runda următoare, afișând din nou mesajul de pornire. 
 + 
 +9. **resetGame** - Resetează toate scorurile și rundele câștigate,​ pregătind jocul pentru un nou meci de la început și afișează mesajul de pornire. 
 + 
 +10. **gameOver** - Afișează un mesaj care indică ce jucător a câștigat jocul. 
 + 
 +11. **selectMode** - Permite jucătorilor să selecteze între modul single-player și multiplayer folosind joystick-ul și butonul de selecție. 
 + 
 +12. **displayModeMenu** - Afișează meniul de selecție a modului pe cel de-al doilea afișaj LCD. 
 + 
 +13. **waitForModeSelection** - Instrucționează jucătorul să verifice cel de-al doilea afișaj pentru selecția modului și așteaptă selectarea modului. 
 + 
 +14. **movePlayer2Automatically** - Mișcă automat paleta jucătorului 2 pe baza poziției mingii, utilizată în modul single-player. 
 + 
 +15. **setup** - Inițializează jocul prin configurarea afișajelor LCD, a pinurilor de intrare/​ieșire și a condițiilor de pornire pentru joc. 
 + 
 +16. **loop** - Bucla principală a jocului care rulează continuu, gestionând intrările jucătorilor,​ mișcarea mingii, actualizările scorurilor și schimbările de stare ale jocului. 
 + 
 +17. **waitForRestart** - Afișează un mesaj care cere jucătorilor să apese un buton pentru a începe o nouă rundă și așteaptă apăsarea butonului. 
 + 
 +18. **resetRound** - Resetează scorurile pentru runda curentă și pregătește jocul pentru o nouă rundă, afișând mesajul de pornire. 
 + 
 +19. **resetGame** - Resetează toate variabilele jocului la stările inițiale, pregătind pentru un nou joc. 
 + 
 +20. **gameOver** - Afișează un mesaj care indică ce jucător a câștigat jocul. 
 + 
 +21. **selectMode** - Gestionează selecția modului single-player sau multiplayer de către jucător. 
 + 
 +22. **displayModeMenu** - Afișează meniul de selecție a modului pe cel de-al doilea afișaj LCD. 
 + 
 +23. **waitForModeSelection** - Afișează instrucțiuni pentru a verifica al doilea afișaj pentru selecția modului și așteaptă alegerea jucătorului. 
 + 
 +24. **movePlayer2Automatically** - Mișcă automat paleta jucătorului 2 pentru a urmări mingea în modul single-player. 
 + 
 + 
 +> Elementul de noutate al proiectului este dat de posibilitatea de a interacționa direct cu sistemul prin intermediul joystickurilor. 
 + 
 +==== Laboratoare utilizate ==== 
 +  - [[pm:​lab:​lab3-2023-2024|]] 
 +  - [[pm:​lab:​lab4-2023-2024|]] 
 +  - [[pm:​lab:​lab6-2023-2024|]] 
 + 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +[[https://​youtu.be/​NIuy8t1Exc0?​si=EKHTQ3DRj8NNWOY8|Youtube Link]] 
 + 
 +===== Concluzii ===== 
 + 
 +===== Download ​=====
  
 <note tip> <note tip>
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului.+Arhiva care conține toate fișierele create pentru acest proiect se poate descărca de pe link-ul de [[https://​github.com/​andreinapruiu/​Pong-Game-Arduino|GitHub]].
 </​note>​ </​note>​
 +
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +==== Hardware Utilizat ==== 
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse ​Software** ​şi **Resurse Hardware**. + 
-</note>+1. **Placă Arduino** 
 +   * [[https://​www.optimusdigital.ro/​ro/​index.php?​controller=attachment&​id_attachment=143|Arduino Uno Fake]] 
 + 
 +2. **Afișaj LCD I2C** 
 +   * [[https://​www.optimusdigital.ro/​ro/​index.php?​controller=attachment&​id_attachment=29|LCD 1602 I2C]] 
 + 
 +3. **Joystick-uri Analogice** 
 +   * [[https://​www.optimusdigital.ro/​ro/​senzori-senzori-de-atingere/​742-modul-joystick-ps2-biaxial-negru-cu-5-pini.html?​search_query=joystick&​results=42|Joystick Module]] 
 + 
 +4. **Butoane Digitale** 
 +   * [[https://​www.adafruit.com/​product/​367|Push Buttons]] 
 + 
 +5. **Buzzer** 
 +   * [[https://​www.adafruit.com/​product/​1536|Buzzer Module]] 
 + 
 +==== Software ​Utilizat ==== 
 + 
 +1. **Arduino IDE** 
 +   [[https://​www.arduino.cc/​en/​software|Arduino IDE Download]] 
 + 
 +2. **Configurare Display** 
 +   * [[https://​lastminuteengineers.com/​i2c-lcd-arduino-tutorial/?​utm_content=cmp-true|I2C Display]] 
 + 
 +2. **Biblioteci Arduino** 
 +   * **Wire.h** 
 +     * [[https://​www.arduino.cc/​en/​Reference/​Wire|Arduino Wire Library]] 
 +   * **LiquidCrystal_I2C.h** 
 +     * [[https://​github.com/​johnrickman/LiquidCrystal_I2C|LiquidCrystal I2C Library]]
  
 <​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>​
  
pm/prj2024/sseverin/andrei.napruiu.1714311238.txt.gz · Last modified: 2024/04/28 16:33 by andrei.napruiu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0