Differences

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

Link to this comparison view

pm:prj2022:cristip:ponggame [2022/05/23 17:19]
robert.coconu [Mediul de dezvoltare]
pm:prj2022:cristip:ponggame [2022/05/24 03:29] (current)
robert.coconu [Download]
Line 32: Line 32:
 ===== Software Design ===== ===== Software Design =====
  
 +=== Mediul de dezvoltare ===
  
 +Mediul de dezvoltare folosit este Arduino IDE 1.8.14. ​
 +Este un software open-source folosit pentru dezvoltarea programelor pentru placutele Arduino
  
 +=== Biblioteci folosite ===
 +Bibliotecile folosite in dezvoltarea acestei aplicatii sunt: 
 +  * Adafruit_GFX ​
 +  * Adafruit SSD1306
 +  * U8glib
  
-== Mediul de dezvoltare ==+Adafruit_GFX este o biblioteca ce ofera functii pentru grafica afisata pe ecranul OLED folosit. Aceasta permite schimbarea display-urilor folosite pe placuta Arduino cu schimbari minime in codul aplicatiei.
  
-Descrierea codului aplicaţiei (firmware):​ +Adafruit SSD1306 este o biblioteca ​de drivere folosita pentru display-urile monocrome de tip 128x64 si 128x32Aceste tipuri de ecrane OLED de tip SSD1306 folosesc pentru comunicare I2C sau SPI.
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +
-  * librării şi surse 3rd-party (e.gProcyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate+
  
 +U8glib este o biblioteca de functii grafice folosita pentru ecrane monocrome de tip TFT sau OLED. Aceasta ofera si suport pentru comunicarea I2C intre Arduino si ecran.
  
-===== Rezultate Obţinute =====+=== Algoritmi si Structuri Folosite ​===
  
-<note tip> +Aplicatia dispune de optiunile urmatoare: SOUND, PAD_SPEED, BALL_SPEED, SKEW, PAD_SIZE, MULTIPLAYER. Aceste optiuni sunt integrate intr-o `struct` ce contine numele, valoarea minima, valoarea maxima, valoarea prin care incrementam si valoarea curenta a optiunii respective. De exemplu, un element al acestei structuri este de forma: `{"​Ball-Speed", ​  1, 19,  1,  4}`.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Pentru ciclarea prin meniul de optiuni folosim apasarea joystick-ului,​ pentru a previne fenomenul de debouncing tinem cont de timpul de la ultima apasare.
  
-===== Download =====+Pentru a verifica rezultatul jocului ( daca mingea gaseste un obstacol sau nu ) verificam pozitia acesteia in ecran. Pentru lovirea peretilor de sus si de jos vom inmulti cu -1 factorul cu care incrementam pozitia bilei pe Oy. Pentru lovirea cu paleta jucatorului vom schimba inversa directia pe Ox iar pe Oy vom decide directia in functie de pozitia bilei fata de mijlocul paletei.
  
-<note warning> +=== Functii implementate === 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ sursescheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+Functiile prezente sunt folosite pentru emiterea sunetelorschimbarea setarilor si verificarea pozitiei mingii.
  
-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**. +Sunt folosite functii pentru emiterea sunetelor pentru lovirea peretilor, paletei ​sau pentru pierderea mingii.
-</​note>​+
  
-===== Jurnal ​=====+In functia pentru schimbarea setarilor se verifica in care setare se aflam in acel moment de timp si in functie de inputul de la joystick vom incrementa sau decrementa valoarea setarii respective. 
 + 
 +Functiile pentru verificarea pozitiei mingii au scopul de a printa aceste informatii in Serial Monitor cu scopul verificarii rularii corecte a aplicatiei. 
 + 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +Rezultatul obtinut este o aplicatie a jocului Pong folosind un ecran 128x64 ce comunica cu o placuta Arduino.  
 +Scorul obtinut pentru Singleplayer este afisat pe partea dreapta a ecranului, primul contor este incrementat cu fiecare pierdere iar cel de-al doilea este incrementat de fiecare data cand jucatorul loveste mingea. Pentru modul Multiplayer impotriva AI-ului, scorul fiecaruia este afisat in dreptul paletei fiecaruia.  
 + 
 +===== Concluzii ===== 
 + 
 +Aplicatia Pong implementata este complexa in felul in care utilizatorul poate sa modifice modul de functionare prin meniul pus la dispozitie. Acest proiect reprezinta o modalitate buna pentru familiarizarea cu comunicarea I2C, folosirea intrerperilor si a ecranelor OLED in aplicatii interactive. 
 +===== Download ​=====
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 +{{:​pm:​prj2022:​cristip:​pong_game.zip|}}
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+  * https://​learn.adafruit.com/​adafruit-gfx-graphics-library 
 +  ​https://​www.arduino.cc/​reference/​en/​libraries/​adafruit-ssd1306/​ 
 +  ​https://​www.arduino.cc/​reference/​en/​libraries/​u8glib/​ 
 +  ​https://​docs.arduino.cc/​learn/​communication/​wire
 </​note>​ </​note>​
  
 <​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/prj2022/cristip/ponggame.1653315592.txt.gz · Last modified: 2022/05/23 17:19 by robert.coconu
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