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:18]
robert.coconu [Software Design]
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 ​+Mediul de dezvoltare ​folosit este Arduino IDE 1.8.14.  
-Descrierea codului aplicaţiei (firmware):​ +Este un software open-source folosit pentru dezvoltarea programelor pentru placutele Arduino
-  * mediu de dezvoltare (if any) (e.gAVR Studio, CodeVisionAVR) +
-  * librării şi 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+
  
 +=== Biblioteci folosite ===
 +Bibliotecile folosite in dezvoltarea acestei aplicatii sunt: 
 +  * Adafruit_GFX ​
 +  * Adafruit SSD1306
 +  * U8glib
  
-===== Rezultate Obţinute =====+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.
  
-<​note ​tip+Adafruit SSD1306 este o biblioteca de drivere folosita pentru display-urile monocrome de tip 128x64 si 128x32. Aceste tipuri de ecrane OLED de tip SSD1306 folosesc pentru comunicare I2C sau SPI.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+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.
  
-===== Download =====+=== Algoritmi si Structuri Folosite ​===
  
-<note warning>​ +Aplicatia dispune de optiunile urmatoareSOUNDPAD_SPEEDBALL_SPEED, SKEW, PAD_SIZE, MULTIPLAYERAceste optiuni sunt integrate intr-o `struct` ce contine numelevaloarea 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}`.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectuluisurseschemeetcUn fişier READMEun 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**. +Pentru ciclarea prin meniul ​de optiuni folosim apasarea joystick-ului, pentru a previne fenomenul de debouncing tinem cont de timpul de la ultima apasare.
-</​note>​+
  
-===== Jurnal ​=====+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. 
 + 
 +=== Functii implementate ​==
 +Functiile prezente sunt folosite pentru emiterea sunetelor, schimbarea setarilor si verificarea pozitiei mingii. 
 + 
 +Sunt folosite functii pentru emiterea sunetelor pentru lovirea peretilor, paletei sau pentru pierderea mingii. 
 + 
 +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.1653315530.txt.gz · Last modified: 2022/05/23 17:18 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