This shows you the differences between two versions of the page.
pm:prj2023:amocanu:szocsmihaela_proiect [2023/05/17 20:11] mihaela.szocs |
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> | ||
Line 24: | Line 21: | ||
Pentru acest proiect, vom avea nevoie de urmatoarele piese: | Pentru acest proiect, vom avea nevoie de urmatoarele piese: | ||
- | Arduino Uno R3 | + | * Arduino Uno R3 |
- | Modul LCD 2004 | + | * Butoane |
- | Modul I2C pentru LCD 2004 | + | * Buzzer pasiv |
- | Modul Joystick x 2 | + | * OLED Display 0.96” 128×64 SPI |
- | Breadboard | + | * Fire |
- | Rezistențe 1kΩ | + | |
- | Buton | + | |
**Schema electrica** | **Schema electrica** | ||
Line 43: | Line 38: | ||
<note> | <note> | ||
- | Descrierea codului aplicaţiei (firmware): | + | Înainte de joc, se afișează un meniu cu opțiuni de scor: 3, 5 sau 7 puncte. |
- | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | Jucătorul 2 navighează prin meniu și alege opțiunea. |
- | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | Se afișează bara de încărcare până la 100% în timp ce jucătorii se pregătesc. |
- | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | Jucătorii sunt bare verticale, mingea este un pixel, obstacolele sunt pătrate, iar elementul de pick-up este un cerc. |
- | * (etapa 3) surse şi funcţii implementate | + | Mișcarea jucătorilor se face pe axa OX, in timp ce mingea se deplasează pe axele XOY. |
+ | |||
+ | 1.Mingea pleacă într-o direcție aleatoare la începutul fiecărei runde. | ||
+ | |||
+ | 2.Jucătorii apără peretele din spate; lovirea peretelui de către minge aduce puncte adversarului. | ||
+ | |||
+ | 3.Se afișează scorul curent și numărul de elemente de pick-up colectate de jucători. | ||
+ | |||
+ | 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> | ||
- | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | ||
- | </note> | ||
- | ===== Concluzii ===== | + | {{:pm:prj2023:amocanu:baraloading.jpg?500|}} |
+ | {{:pm:prj2023:amocanu:meniualegerepuncte.jpg?500|}} | ||
- | ===== Download ===== | + | {{:pm:prj2023:amocanu:desfasurarejoc.jpg?500|}} |
+ | {{:pm:prj2023:amocanu:mesajfinal.jpg?500|}} | ||
- | <note warning> | ||
- | O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). | ||
- | Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:pm:prj20??:c?** sau **:pm:prj20??:c?:nume_student** (dacă este cazul). **Exemplu:** Dumitru Alin, 331CC -> **:pm:prj2009:cc:dumitru_alin**. | + | ===== Concluzii ===== |
+ | <note> | ||
+ | Proiect util in vederea intelegerii mai bune a conexiunii hardware-software. | ||
</note> | </note> | ||
- | ===== Jurnal ===== | + | ===== Download ===== |
+ | {{:pm:prj2023:amocanu:pm.zip|}} | ||
+ | |||
+ | ===== Jurnal resurse ===== | ||
<note > | <note > | ||
- | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | + | [[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> | </note> | ||