Differences

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

Link to this comparison view

pm:prj2021:agrigore:pong [2021/06/01 23:16]
liviu.enache0211 [Software Design]
pm:prj2021:agrigore:pong [2021/06/02 22:22] (current)
liviu.enache0211
Line 7: Line 7:
   * La pornirea programului,​ se va afisa un ecran de "​welcome",​ iar jocul incepe cand se detecteaza input.   * La pornirea programului,​ se va afisa un ecran de "​welcome",​ iar jocul incepe cand se detecteaza input.
  
-==== Descriere generala ====+===== Descriere generala ​=====
  
 === Functionalitate === === Functionalitate ===
Line 18: Line 18:
  
  
-==== Hardware Design ====+===== Hardware Design ​=====
  
 === Componente === === Componente ===
Line 33: Line 33:
 {{ :​pm:​prj2021:​agrigore:​mypong2.jpg |}} {{ :​pm:​prj2021:​agrigore:​mypong2.jpg |}}
  
-==== Software Design ====+=== Conectare fizica === 
 +{{:​pm:​prj2021:​agrigore:​conectare_pong.jpeg?​600|}} 
 + 
 +===== Software Design ​=====
  
 === Mediu de dezvoltare === === Mediu de dezvoltare ===
-* Arduino IDE 1.8.13 +  ​* Arduino IDE 1.8.13 
-* Fritzing (folosit pentru schema electrica)+  * Fritzing (folosit pentru schema electrica)
  
 === Biblioteci === === Biblioteci ===
-[[https://​github.com/​adafruit/​Adafruit_SSD1306|Adafruit_SSD1306]] --- Biblioteca driver pentru display-uri OLED monocromate de tipul SSD1306+[[https://​github.com/​adafruit/​Adafruit_SSD1306|Adafruit_SSD1306]] --- Biblioteca driver pentru display-uri OLED monocromate de tipul SSD1306
 + 
 +[[https://​github.com/​adafruit/​Adafruit-GFX-Library|Adafruit GFX]] --- Contine o multitudine de functii pentru manipularea pixelilor display-urilor. 
 + 
 +=== Functii === 
 + 
 +**setup()** 
 +  * Seteaza pinii LED-urilor ca OUTPUT. 
 +  * Initializeaza display-ul OLED. 
 +  * Afiseaza ecranul de splash. 
 + 
 +**splash()** 
 +  * Afiseaza ecranul de splash folosind functii din biblioteca Adafruit GFX. 
 +  * Asteapta input din partea potentiometrelor pentru a incepe jocul. 
 +  * Porneste un sunet de start odata ce a primit input. 
 + 
 +**centerPrint()** 
 +  * Functie ce face mai usoara afisarea de text pe centrul ecranului. 
 + 
 +**printText()** 
 +  * Functie ce face mai usoara afiseara de text la o anumita pozitie. 
 + 
 +**calculateMovement()** 
 +  * Calculeaza pozitia mingii si a paletelor (in functie de inputul oferit de potentiometre). 
 +  * Verifica coliziunea mingii cu paletele, caz in care inverseaza sensul acesteia. 
 +  * Verifica daca mingea a trecut de una din palete, caz in care adauga un punct jucatorului respectiv. 
 +  * Verifica daca jocul a fost castigat de vreun jucator, apeland functia hasWon(CULOARE) daca este cazul. 
 + 
 +**hasWon()** 
 +  * Afiseaza un ecran ce anunta jucatorul care a castigat. 
 +  * Aprinde si stinge incontinuu LED-ul acestuia, asteptand input de la potentiometre pentru a incepe un nou joc. 
 + 
 +**draw()** 
 +  * Afiseaza fiecare element al jocului pe ecran. 
 +  * Aceste elemente sunt: terenul (format dintr un chenar dreptunghiular,​ o linie verticala punctata aflata la mijloc, scorurile jucatorilor) si paletele. 
 + 
 +**addEffect()** 
 +  * Aceasta functie adauga "​efect"​ mingii daca aceasta este lovita de o paleta in miscare. 
 +  * Acest efect reprezinta marirea sau micsorarea vitezei pe axa Y a mingii, in functie de cum a fost lovita de paleta. 
 + 
 +===== Rezultate obtinute ===== 
 + 
 +  * In final, am obtinut clasicul joc de Pong cu o interfata similara cu cea regasita pe consola de jocuri Atari, complet functional si cu cateva feature-uri in plus. 
 +  * Este de asemenea foarte compact, putand fi usor pus intr-o cutie alaturi de o baterie si folosit ca si joc handheld. 
 + 
 +[[https://​youtu.be/​nmD0pKptaec|Demo]] 
 + 
 +=== Derularea jocului === 
 +{{:​pm:​prj2021:​agrigore:​game_pong.jpeg?​500|}} 
 + 
 +=== Ecran castigator === 
 +{{:​pm:​prj2021:​agrigore:​won_pong.jpeg?​500|}} 
 + 
 +===== Concluzii =====
  
-[[https://​github.com/​adafruit/​Adafruit-GFX-Library|Adafruit GFX]] --- Contine o multitudine ​de functii pentru manipularea pixelilor display-urilor+  * Proiectul functioneaza si obtine rezultatele asteptate. 
 +  * Potentiometrele muta paletele cu acuratete. 
 +  * Nu a necesitat multe piese. 
 +  * Jocul se misca intr-un frame-rate bun, foarte jucabil. 
 +  * Se aseamana foarte mult cu jocul clasic ​de Pong. 
 +  * Datorita folosirii Arduino Nano, acesta este compact si portabil.
  
-==== Rezultate obtinute ​====+===== Download ​===== 
 +  * {{:​pm:​prj2021:​agrigore:​pong.zip|Arhiva sursa}}
  
-==== Concluzii ​====+===== Jurnal ​===== 
 +  * 25/4: crearea paginii Wiki, descriere, diagrama bloc. 
 +  * 7/5: achizitionarea componentelor. 
 +  * 11/5: asamblarea componentelor. 
 +  * 14/5: scrierea logicii de baza si afisarea. 
 +  * 15/5: adaugarea ecranului de splash si a celui de victorie. 
 +  * 18/5: adaugarea functionalitatii de "​efect"​. 
 +  * 1/6: curatarea codului. 
 +  * 2/6: finalizarea paginii Wiki.
  
-==== Download ​====+===== Bibliografie/​Resurse ​===== 
 +  * [[https://​randomnerdtutorials.com/​guide-for-oled-display-with-arduino/​|Utilizare display OLED]] 
 +  * {{:​pm:​prj2021:​agrigore:​plusivo_nano_starter_kit_guide.pdf|}}
  
-==== Jurnal ==== 
-  * 25/4: creare pagina Wiki, Descriere, diagrama bloc. 
  
-==== Bibliografie/​Resurse ==== +PDF:  <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html>​
-Documentația:  <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​PDF</​a></​html>​+
pm/prj2021/agrigore/pong.1622578564.txt.gz · Last modified: 2021/06/01 23:16 by liviu.enache0211
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