This shows you the differences between two versions of the page.
pm:prj2023:amocanu:szocsmihaela_proiect [2023/05/07 14:42] mihaela.szocs created |
pm:prj2023:amocanu:szocsmihaela_proiect [2023/05/29 19:38] (current) mihaela.szocs |
||
---|---|---|---|
Line 3: | Line 3: | ||
===== Introducere ===== | ===== Introducere ===== | ||
<note tip> | <note tip> | ||
- | Proiectul este un joc Pong realizat cu ajutorul placii Arduino. Scopul jocului este de a lovi mingea cu paleta si de a o face sa treaca de catre paleta adversa. Jocul se desfasoara pe doua matrice LED de 8x8, iar jucatorii isi controleaza paleta cu ajutorul a doua potentiometre. De asemenea, jocul poate fi inceput sau resetat cu ajutorul a doua butoane. | ||
- | Pentru a realiza acest proiect, este necesara conectarea a doua potentiometre si a doua butoane la placa Arduino, precum si a doua matrice LED. De asemenea, se va utiliza biblioteca LedControl pentru a controla afisajul matricilor LED . | + | Jocul este implementat pe o plăcuță Arduino Uno și implică doi jucători care se confruntă într-un joc de ping pong. Scopul jocului este de a controla direcția bilei sau prin colectarea unui element de pick-up special, care apare în timpul jocului. Există, de asemenea, obstacole care apar în mod aleatoriu pentru a încurca jucătorii. Interacțiunea cu jocul se face prin intermediul butoanelor și afișarea rezultatelor se realizează pe un display. De asemenea, se utilizează un buzzer pentru a semnala coliziunile bilei cu terenul, obstacolele sau atunci când un jucător marchează un punct. |
- | + | ||
- | In final, prin intermediul proiectului, utilizatorii pot sa isi testeze abilitatile si sa se distreze jucand unul dintre cele mai vechi jocuri video, Pong. | + | |
</note> | </note> | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
- | <note tip> | + | <note> |
O schemă bloc cu toate modulele proiectului: | O schemă bloc cu toate modulele proiectului: | ||
<note important> SCHEMA BLOC | <note important> SCHEMA BLOC | ||
- | {{ https://app.diagrams.net/}}</note> | ||
+ | |||
+ | {{:pm:prj2023:amocanu:schemabloc.png?200|}} | ||
+ | </note> | ||
Hardware Design | Hardware Design | ||
- | <note tip> | ||
Pentru acest proiect, vom avea nevoie de urmatoarele piese: | Pentru acest proiect, vom avea nevoie de urmatoarele piese: | ||
- | * Placa Arduino Uno sau Mega | + | * Arduino Uno R3 |
- | * 2 potentiometre | + | * Butoane |
- | * 2 butoane pushbutton | + | * Buzzer pasiv |
- | * 2 matrici LED de 8x8 | + | * OLED Display 0.96” 128×64 SPI |
- | * Jumper wires | + | * Fire |
+ | |||
+ | **Schema electrica** | ||
+ | |||
+ | |||
+ | |||
+ | {{:pm:prj2023:amocanu:pong_schema-electrica.png?600|}} | ||
</note> | </note> | ||
+ | ===== Software Design ===== | ||
- | Software Design | ||
+ | <note> | ||
+ | Înainte de joc, se afișează un meniu cu opțiuni de scor: 3, 5 sau 7 puncte. | ||
+ | Jucătorul 2 navighează prin meniu și alege opțiunea. | ||
+ | Se afișează bara de încărcare până la 100% în timp ce jucătorii se pregătesc. | ||
+ | Jucătorii sunt bare verticale, mingea este un pixel, obstacolele sunt pătrate, iar elementul de pick-up este un cerc. | ||
+ | Mișcarea jucătorilor se face pe axa OX, in timp ce mingea se deplasează pe axele XOY. | ||
- | <note tip> | + | 1.Mingea pleacă într-o direcție aleatoare la începutul fiecărei runde. |
- | Descrierea codului aplicaţiei (firmware): | + | |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | 2.Jucătorii apără peretele din spate; lovirea peretelui de către minge aduce puncte adversarului. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | 3.Se afișează scorul curent și numărul de elemente de pick-up colectate de jucători. |
- | * (etapa 3) surse şi funcţii implementate | + | |
+ | 4.Obstacolele și elementele de pick-up apar în poziții aleatoare pe ecran. | ||
+ | |||
+ | 5.Elementul de pick-up reapare după un timp, după ce este colectat de un jucător. | ||
+ | |||
+ | 6.Obstacolele se mișcă și își schimbă dimensiunea la lovitura mingei sau la începutul unei runde. | ||
+ | |||
+ | 7.Jocul se încheie când un jucător atinge scorul maxim selectat din meniu. | ||
+ | |||
+ | 8.Se afișează câștigătorul și se redă o melodie la buzzer. Se revine apoi la meniu. | ||
+ | | ||
</note> | </note> | ||
- | Rezultate Obţinute | + | ===== Rezultate Obţinute ===== |
- | <note tip> | + | |
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | {{:pm:prj2023:amocanu:baraloading.jpg?500|}} |
+ | {{:pm:prj2023:amocanu:meniualegerepuncte.jpg?500|}} | ||
+ | |||
+ | {{:pm:prj2023:amocanu:desfasurarejoc.jpg?500|}} | ||
+ | {{:pm:prj2023:amocanu:mesajfinal.jpg?500|}} | ||
+ | |||
+ | |||
+ | ===== Concluzii ===== | ||
+ | <note> | ||
+ | Proiect util in vederea intelegerii mai bune a conexiunii hardware-software. | ||
</note> | </note> | ||
- | + | ||
+ | ===== Download ===== | ||
+ | {{:pm:prj2023:amocanu:pm.zip|}} | ||
+ | |||
+ | ===== Jurnal resurse ===== | ||
+ | |||
+ | <note > | ||
+ | [[https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples]] | ||
+ | |||
+ | [[https://lastminuteengineers.com/oled-display-arduino-tutorial/]] | ||
+ | |||
+ | [[https://www.youtube.com/watch?v=u5drIsmr6UM&ab_channel=%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D0%B0%D0%BD%D1%82%D0%B8%D0%BD]] | ||
+ | |||
+ | [[https://create.arduino.cc/projecthub/ronfrtek/arduino-oled-display-menu-with-option-to-select-e85f04]] | ||
+ | |||
+ | [[https://create.arduino.cc/projecthub/GeneralSpud/passive-buzzer-song-take-on-me-by-a-ha-0f04a8]] | ||
+ | |||
+ | [[https://gist.github.com/mikeputnam/2820675]] | ||
+ | |||
+ | </note> | ||
+ | |||
+ | <html><a class="media mediafile mf_pdf" href="?do=export_pdf">Export to PDF</a></html> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |