Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2024:ccontasel:maria.vasilache [2024/05/05 02:21]
maria.vasilache [Descriere generală]
pm:prj2024:ccontasel:maria.vasilache [2024/05/26 17:55] (current)
maria.vasilache [Bibliografie/Resurse]
Line 6: Line 6:
 **Grupa:** 331CB **Grupa:** 331CB
  
-**Indrumator:** Cristian ​Contasel+**Îndrumător:** Cristian ​Contășel
 </​note>​ </​note>​
  
 ===== Introducere ===== ===== Introducere =====
-Proiectul are ca finalitate un joc cu doua moduri: **Piano Tiles** si **Nostalgia**. ​Intr-o nota mai minimalista, jocul **Piano Tiles** se rezuma ​la sincronizarea ​apasarii ​unor butoane cu aparitia ​clapelor pe un display. Pentru a marca finalul unui joc, se vor aprinde ​niste leduri, ori verde, ori rosuin functie ​de castig. **Nostalgia** este un adaos pentru ​jucator, acesta ​putand sa redea piese vechi romanesti ​cu ajutorul unui cardSD.  +Proiectul are ca finalitate un joc cu doua moduri: **Piano Tiles** si **Nostalgia**. ​Într-o nota mai minimalistă, jocul **Piano Tiles** se rezumă ​la sincronizarea ​apăsării ​unor butoane cu apariția ​clapelor pe un display. Pentru a marca finalul unui joc, se vor aprinde ​niște ​leduri, ori verde, ori roșuîn funcție ​de câștig. **Nostalgia** este un adaos pentru ​jucător, acesta ​putând să redea piese vechi românești ​cu ajutorul unui card SD.  
-Scopul principal al proiectului este de a intoarce in trecut ​userul, fie prin piesele vechi, fie prin jocul foarte popular prin 2014. +Scopul principal al proiectului este de a întoarce în trecut ​user-ul, fie prin piesele vechi, fie prin jocul foarte popular prin 2014. 
  
 ===== Descriere generală ===== ===== Descriere generală =====
-Proiectul va fi realizat cu ajutorul Arduino. ​Avand un display ​si butoane ​sincornizate, voi realiza jocul propriu-zis,​ iar castigul il voi marca prin ledurile care se vor aprinde verde sau rosuJocul va avea un timp limitat pana se va decide castigarea lui. Redarea muzicii o voi face cu ajutorul unui SD card reader ​si al unui difuzor. Piesele disponibile pe cardul de memorie vor fi alese in urma unui sondaj de opinie. 'Skip song' va fi realizat cu ajutorul unui buton. ​Odata ajuns la finalul unei melodii, ​urmatoarea ​se va reda automat, pana la terminarea playlist-ului.+Proiectul va fi realizat cu ajutorul ​plăcuței ​Arduino ​UNOAvând ​un display ​și 3 butoane ​sincronizate, voi realiza jocul propriu-zis,​ iar câștigul îl voi marca prin ledurile care se vor aprinde verde sau roșuCâștigul jocului e determinat de apăsarea corectă a butoanelor. Dacă se greșește de 3 ori, se ajunge la pierderea rundei. Redarea muzicii o voi face cu ajutorul unui SD card reader ​și al unui difuzor. Piesele disponibile pe cardul de memorie vor fi alese în urma unui sondaj de opinie. 'Skip song' va fi realizat cu ajutorul unui buton. ​Odată ​ajuns la finalul unei melodii, ​următoarea ​se va reda automat, pana la terminarea playlist-ului.
  
 ===== Hardware Design ===== ===== Hardware Design =====
  
-Lista de componente:​ +Lista de componente ​și rolul lor
-   ​* ​placuta ​Arduino +   ​* ​**placuță ​Arduino ​UNO:** microcontroller-ul controlează activitatea celorlalte componente. Acesta primește input de la butoane și de la modul SD și oferă output spre led-uri, ecranul OLED și speaker; 
-   * display +   * **breadboard:​** conectează componentele între ele și cu placa Arduino UNO; 
-   * butoane ​ (minim 4+   * **display ​OLED:** afișează matricea 3x3 a jocului și mesaje; 
-   ​* ​leduri ​(minim 2+   ​* ​**5 butoane:** 3 dintre ele sunt folosite pentru jocul de Piano Tiles, unul este folosit pentru a face switch între moduri, iar ultimul oferă posibilitatea de a da Skip pieselor redate de pe cardul de memorie; 
-   ​* ​SD card reader +   * **led roșu:** anunță o greșeală făcută de user în timpul jocului; 
-   ​* ​SD card +   * **led verde:** anunță câștigarea rundei; 
-   * difuzor+   * **modul cititor card SD:** ajută la citirea pieselor de pe cardul de memorie; 
 +   * **SD card:** stochează piesele ce urmează să fie redate; 
 +   * **difuzor loudity ld-bzpn-2312:​** redă piesele; 
 +   * **rezistențe:​** limitează curentul electric care trece prin leduri și butoane (rezistență de pull-down); 
 +   ​* ​**fire:** unește componentele. 
 + 
 +===== Schema bloc ===== 
 +{{:​pm:​prj2024:​ccontasel:​schema_bloc.drawio_1_.png?​400|}} 
 + 
 + 
 +===== Schemă electrică ===== 
 +{{:​pm:​prj2024:​ccontasel:​arduino_tiless_bb.png?​450|}} 
 +{{:​pm:​prj2024:​ccontasel:​arduino_tiless_schem.png?​450|}} 
 + 
 +În schema de mai sus am ilustrat conexiunile dintre componente, o prezentare vizuală fiind mai sugestivă. Se pot observa pinii folosiți și cu ce componente sunt legați. 
 + 
 + 
 +===== Descriere pini ===== 
 +Toate componentele sunt legate și la VCC și Ground. 
 + 
 +Componentele și pinii folosiți:​ 
 +   * **display OLED:** se folosește de protocolul I2C și se conectează la pinii **A4** ​(pentru SCL - serial clock) și **A5** (pentru SDA - serial data), ambii fiind pini analogici; 
 +   ​* ​**5 butoane:** sunt conectate la pinii digitali **6**, **7**, **8**, **9**, **10**, ca input; 
 +   ​* ​**ledurile:​** sunt conectate la pinii digitali **2** și **5** ca output; 
 +   * **modul cititor ​card SD:** se folosește de protocolul SPI și se conectează la pinii **11** (pentru MOSI - Master Out Slave In), **12** (pentru MISO - Master In Slave Out), **13** (pentru SCK - Serial Clock) și **3** (pentru CS - Chip Select). 
 +   * **difuzor ​loudity ld-bzpn-2312:​** este conectat la pinul analog **A1**, ca output. 
 + 
 + 
 +===== Merge? ===== 
 + 
 +{{:​pm:​prj2024:​ccontasel:​first_try.jpg?​300|}} 
 + 
 +Se poate observa că pe ecranul display-ului este afișat mesajul de început de joc.
  
 ===== Software Design ===== ===== Software Design =====
  
 +Inițial, am creat câteva variabile globale și define-uri pentru a fi mai ușoară accesarea lor. Acestea referă pinii conectați la componente, elemente ale jocului și modurile de redare.
  
-<note tip> +Bibliotecile foloiste
-Descrierea codului aplicaţiei (firmware)+   ​pentru funcționarea display-ului ​(afișarea datelor), am folosit bibliotecile **Adafruit_GFX.h** și **Adafruit_SSD1306.h**; 
-  mediu de dezvoltare ​(if any(e.gAVR Studio, CodeVisionAVR) +   ​pentru comunicare I2C cu display-ul, am folosit biblioteca **Wire.h** 
-  librării şi surse 3rd-party (e.g. Procyon AVRlib) +   ​pentru comunicarea cu cardul SD, am folosit **SD.h**; 
-  algoritmi şi structuri pe care plănuiţi să le implementaţi +   ​pentru comunicarea SPI cu SD card reader-ul, am folosit **SPI.h**; 
-  (etapa 3) surse şi funcţii implementate +   * pentru sunet, prin buzzer, am folosit **TMRpcm.h**.
-</​note>​+
  
 +Funcțiile implementate:​
 +   * **setup()** - setez pinii ca INPUT/​OUTPUT(butoanele => input; ledurile => output), ​ pregătesc display-ul, speaker-ul și SD reader-ul spre a fi folosite (sunt definite global);
 +   * **loop()** - verific modul de redare (0 = PIANO_TILES;​ 1 = NOSTALGIA_PLAYER). În cazul în care se apasă Butonul 1, se face switch între acestea, iar apăsarea butonului 2 realizează intrarea în modul respectiv;
 +   * **updateModeDisplay()** - Înainte de a se porni modul de redare, pe display va apărea titlul modului ales pentru o mai ușoară gestionare a lor de către utilizator;
 +   * **drawGameMatrix()** - Se creează matricea pentru joc din pătrate. Pentru un '​tile',​ se va afișa un pătrat plin;
 +   * **startPianoTilesGame()** - Aici este prezentă logică jocului de Piano Tiles. Pe display va apărea o matrice 3x3, care va imita pianul. Ulterior se verifică daca butonul apăsat (Butoanele 3, 4 și 5) corespunde cu cel unde se află clapa pe ecran. În caz de eșec, se incrementează contorul '​misses'​ și se aprinde ledul roșu. Această variabilă este verificată constant, deoarece, ajunsă la 3, determină finalitatea jocului. Pentru 5 apăsări corecte se aprinde ledul verde, care marchează o rundă câștigată
 +   * **startNostalgiaPlayerGame()** - Se redau piesele citite de pe cardul de memorie. La apăsarea butonului 1, se oprește melodia și se iese din modul Nostalgia Player; la apăsarea butonului 2, se dă skip la piesa curentă; la apăsarea butonului 3, se pune pe pauză melodia.
 +
 +
 +Printre programele folosite se numără: Arduino IDE (pentru codare), Fritzing (pentru crearea schemei electrice) si draw.io (pentru crearea schemei bloc).
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
 <note tip> <note tip>
-Care au fost rezultatele ​obţinute în urma realizării proiectului vostru.+Ca finalitate, s-a obținut un joc simpatic de Piano Tiles, generat random, care permite jucătorului să își pună la încercare atenția și reflexele.
 </​note>​ </​note>​
- 
-===== Concluzii ===== 
  
 ===== Download ===== ===== Download =====
 +Arhiva conține codul, schemele și un mic demo.
  
 +{{:​pm:​prj2024:​ccontasel:​pm_piano_tiles.zip|}}
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +{{:​pm:​prj2024:​ccontasel:​jurnal2pm.png?500|}}
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. +
-</​note>​ +
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ +**Resurse Hardware** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +   * https://​cleste.ro/​placa-de-dezvoltare-uno-r3-atmega328p.html 
-</note> +   * https://​cleste.ro/​ecra-oled-0-96-inch.html 
- +   * https://www.optimusdigital.ro/​ro/​altele/​98-modul-cititor-card-sd.html?​search_query=Modul+cititor+card+SD&​results=5
-<html><a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>+
  
  
pm/prj2024/ccontasel/maria.vasilache.1714864888.txt.gz · Last modified: 2024/05/05 02:21 by maria.vasilache
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0