This shows you the differences between two versions of the page.
pm:prj2021:agrigore:pong [2021/06/02 12:05] liviu.enache0211 [Rezultate obtinute] |
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 === | ||
Line 40: | Line 43: | ||
=== 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 | + | [[https://github.com/adafruit/Adafruit-GFX-Library|Adafruit GFX]] --- Contine o multitudine de functii pentru manipularea pixelilor display-urilor. |
=== Functii === | === Functii === | ||
**setup()** | **setup()** | ||
- | * Seteaza pinii LED-urilor ca OUTPUT | + | * Seteaza pinii LED-urilor ca OUTPUT. |
- | * Initializeaza display-ul OLED | + | * Initializeaza display-ul OLED. |
- | * Afiseaza ecranul de splash | + | * Afiseaza ecranul de splash. |
**splash()** | **splash()** | ||
- | * Afiseaza ecranul de splash folosind functii din biblioteca Adafruit GFX | + | * Afiseaza ecranul de splash folosind functii din biblioteca Adafruit GFX. |
- | * Asteapta input din partea potentiometrelor pentru a incepe jocul | + | * Asteapta input din partea potentiometrelor pentru a incepe jocul. |
- | * Porneste un sunet de start odata ce a primit input | + | * Porneste un sunet de start odata ce a primit input. |
**centerPrint()** | **centerPrint()** | ||
- | * Functie ce face mai usoara afisarea de text pe centrul ecranului | + | * Functie ce face mai usoara afisarea de text pe centrul ecranului. |
**printText()** | **printText()** | ||
- | * Functie ce face mai usoara afiseara de text la o anumita pozitie | + | * Functie ce face mai usoara afiseara de text la o anumita pozitie. |
**calculateMovement()** | **calculateMovement()** | ||
- | * Calculeaza pozitia mingii si a paletelor (in functie de inputul oferit de potentiometre) | + | * 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 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 mingea a trecut de una din palete, caz in care adauga un punct jucatorului respectiv. |
- | * Verifica daca jocul a castigat de vreun jucator, apeland functia hasWon(CULOARE) daca este cazul | + | * Verifica daca jocul a fost castigat de vreun jucator, apeland functia hasWon(CULOARE) daca este cazul. |
**hasWon()** | **hasWon()** | ||
- | * Afiseaza un ecran ce anunta jucatorul care a castigat | + | * 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 | + | * Aprinde si stinge incontinuu LED-ul acestuia, asteptand input de la potentiometre pentru a incepe un nou joc. |
**draw()** | **draw()** | ||
- | * Afiseaza fiecare element al jocului pe ecran | + | * 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 | + | * Aceste elemente sunt: terenul (format dintr un chenar dreptunghiular, o linie verticala punctata aflata la mijloc, scorurile jucatorilor) si paletele. |
**addEffect()** | **addEffect()** | ||
- | * Aceasta functie adauga "efect" mingii daca aceasta este lovita de o paleta in miscare | + | * 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 | + | * Acest efect reprezinta marirea sau micsorarea vitezei pe axa Y a mingii, in functie de cum a fost lovita de paleta. |
- | ==== Rezultate obtinute ==== | + | ===== 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. | * 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. | * Este de asemenea foarte compact, putand fi usor pus intr-o cutie alaturi de o baterie si folosit ca si joc handheld. | ||
- | ==== Concluzii ==== | + | [[https://youtu.be/nmD0pKptaec|Demo]] |
+ | |||
+ | === Derularea jocului === | ||
+ | {{:pm:prj2021:agrigore:game_pong.jpeg?500|}} | ||
+ | |||
+ | === Ecran castigator === | ||
+ | {{:pm:prj2021:agrigore:won_pong.jpeg?500|}} | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | ===== Download ===== | ||
+ | * {{:pm:prj2021:agrigore:pong.zip|Arhiva sursa}} | ||
+ | |||
+ | ===== 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> | + |