This shows you the differences between two versions of the page.
|
pm:prj2021:agrigore:pong [2021/06/02 12:26] liviu.enache0211 [Jurnal] |
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 35: | Line 35: | ||
| === Conectare fizica === | === Conectare fizica === | ||
| {{:pm:prj2021:agrigore:conectare_pong.jpeg?600|}} | {{:pm:prj2021:agrigore:conectare_pong.jpeg?600|}} | ||
| - | ==== Software Design ==== | + | |
| + | ===== Software Design ===== | ||
| === Mediu de dezvoltare === | === Mediu de dezvoltare === | ||
| Line 42: | 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. | ||
| + | |||
| + | [[https://youtu.be/nmD0pKptaec|Demo]] | ||
| === Derularea jocului === | === Derularea jocului === | ||
| Line 93: | Line 96: | ||
| {{:pm:prj2021:agrigore:won_pong.jpeg?500|}} | {{:pm:prj2021:agrigore:won_pong.jpeg?500|}} | ||
| - | ==== Concluzii ==== | + | ===== Concluzii ===== |
| * Proiectul functioneaza si obtine rezultatele asteptate. | * Proiectul functioneaza si obtine rezultatele asteptate. | ||
| Line 102: | Line 105: | ||
| * Datorita folosirii Arduino Nano, acesta este compact si portabil. | * Datorita folosirii Arduino Nano, acesta este compact si portabil. | ||
| - | ==== Download ==== | + | ===== Download ===== |
| + | * {{:pm:prj2021:agrigore:pong.zip|Arhiva sursa}} | ||
| - | ==== Jurnal ==== | + | ===== Jurnal ===== |
| * 25/4: crearea paginii Wiki, descriere, diagrama bloc. | * 25/4: crearea paginii Wiki, descriere, diagrama bloc. | ||
| * 7/5: achizitionarea componentelor. | * 7/5: achizitionarea componentelor. | ||
| Line 114: | Line 118: | ||
| * 2/6: finalizarea paginii Wiki. | * 2/6: finalizarea paginii Wiki. | ||
| - | ==== Bibliografie/Resurse ==== | + | ===== Bibliografie/Resurse ===== |
| - | Documentația: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> | + | * [[https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/|Utilizare display OLED]] |
| + | * {{:pm:prj2021:agrigore:plusivo_nano_starter_kit_guide.pdf|}} | ||
| + | |||
| + | |||
| + | PDF: <html><a class="media mediafile mf_pdf" href="?do=export_pdf">PDF</a></html> | ||