This shows you the differences between two versions of the page.
pm:prj2021:avaduva:pong [2021/06/02 03:08] george.ionescu1202 [Hardware Design] |
pm:prj2021:avaduva:pong [2021/06/02 10:41] (current) george.ionescu1202 [Download] |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Scopul proiectului este implementarea jocului Pong folosind un ecran OLED și butoane care reprezintă schimbarea poziției paletelor pe ecran. Se poate juca în mod endless sau temporizat, în cazul celui din urmă afișându-se cine a câștigat la final. | + | Scopul proiectului este implementarea jocului Pong folosind un ecran LCD și butoane care reprezintă schimbarea poziției paletelor pe ecran. Se poate juca în mod endless sau temporizat, în cazul celui din urmă afișându-se cine a câștigat la final. |
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 10: | Line 10: | ||
===== Hardware Design ===== | ===== Hardware Design ===== | ||
- | ===== Software Design ===== | + | |
==== Lista de componente ==== | ==== Lista de componente ==== | ||
Line 16: | Line 16: | ||
* Breadboard | * Breadboard | ||
* Buzzer | * Buzzer | ||
- | * Ecran OLED | + | * Ecran LCD |
* Butoane | * Butoane | ||
* Fire | * Fire | ||
==== Schema Bloc ==== | ==== Schema Bloc ==== | ||
- | {{:pm:prj2021:avaduva:pong.png?300|}} | + | {{:pm:prj2021:avaduva:bloc.png?300|}} |
==== Schema Electrică ===== | ==== Schema Electrică ===== | ||
{{:pm:prj2021:avaduva:schel.png?800|}} | {{:pm:prj2021:avaduva:schel.png?800|}} | ||
+ | ===== Software Design ===== | ||
+ | * Mediu de dezvoltare: Arduino IDE | ||
+ | * Biblioteci 3rd party: Adafruit_GFX (grafica), Adafruit_ST7735 (ecranul) | ||
+ | |||
+ | Algoritmul se bazează pe citirea stării butoanelor de direcție și actualizarea coordonatelor | ||
+ | paletelor și a mingii în funcție de momentul în timp și de schimbarea direcției. La coliziuni, se pornește buzzer-ul. După fiecare minge ratată sau la apăsarea butonului de pauză, se afișează scorul. Modul temporizat/endless se alege la inceput, prin apăsarea butoanelor UP/DOWN ale celui de-al doilea jucător. | ||
+ | |||
+ | Modul "temporizat" de fapt așteapă ca un jucător să atingă un anumit scor, după declară un câștigător. | ||
+ | |||
+ | La finalul jocului, buzzer-ul va emite un sunet. | ||
+ | |||
+ | |||
+ | ==== Funcții utilizate ==== | ||
+ | * buttonWait - pentru a selecta modul de joc | ||
+ | * drawCourt - desenează chenarul alb al jocului | ||
+ | * setup - inițializări și splash screen-ul | ||
+ | * loop - jocul în sine -> mișcări și coliziuni, posibilitatea de a pune pauză | ||
+ | * gameOver - afișează câștigătorul | ||
+ | * showScore - afișează scorul când o minge este ratată | ||
+ | * pause - pune pauză | ||
+ | |||
+ | ===== Rezultate obținute ===== | ||
+ | |||
+ | Link demo: [[https://www.icloud.com/sharedalbum/#B0hJtdOXmPSqd43]] | ||
+ | |||
+ | {{:pm:prj2021:avaduva:splash.jpg?200|}} | ||
+ | {{:pm:prj2021:avaduva:game.jpg?200|}} | ||
+ | {{:pm:prj2021:avaduva:done.jpg?200|}} | ||
+ | |||
+ | ===== Concluzii ===== | ||
+ | |||
+ | ==== Download ==== | ||
+ | {{:pm:prj2021:avaduva:333cc_george-valentin_ionescu_resurse.zip|}} | ||
+ | |||
+ | {{:pm:prj2021:avaduva:pong_-_doc.pdf|}} | ||
+ | |||
+ | ==== Bibliografie/Resurse ==== | ||
+ | [[https://github.com/adafruit/Adafruit-GFX-Library]] | ||
+ | |||
+ | [[https://github.com/adafruit/Adafruit-ST7735-Library/]] | ||
+ | |||
+ | [[https://www.instructables.com/Interfacing-Buzzer-to-Arduino/]] | ||
+ | [[https://arduino.stackexchange.com/questions/15844/pause-code-untill-a-button-is-pressed]] | ||
+ | [[https://www.youtube.com/watch?v=ZRL0GUqebFs&t=5s]] |