Differences

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

Link to this comparison view

pm:prj2024:ccontasel:maria.vasilache [2024/05/17 23:25]
maria.vasilache
pm:prj2024:ccontasel:maria.vasilache [2024/05/26 17:55] (current)
maria.vasilache [Bibliografie/Resurse]
Line 18: Line 18:
 ===== Hardware Design ===== ===== Hardware Design =====
  
-Lista de componente:​ +Lista de componente ​și rolul lor
-   ​* ​placuta ​Arduino UNO +   ​* ​**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; 
-   * breadboard +   * **breadboard:** conectează componentele între ele și cu placa Arduino UNO; 
-   * display OLED +   * **display OLED:** afișează matricea 3x3 a jocului și mesaje; 
-   * 5 butoane +   * **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; 
-   * led roșu +   * **led roșu:** anunță o greșeală făcută de user în timpul jocului; 
-   * led verde +   * **led verde:** anunță câștigarea rundei; 
-   * modul cititor card SD +   * **modul cititor card SD:** ajută la citirea pieselor de pe cardul de memorie; 
-   * SD card +   * **SD card:** stochează piesele ce urmează să fie redate; 
-   * difuzor +   * **difuzor ​loudity ld-bzpn-2312:​** redă piesele; 
-   * fire+   * **rezistențe:​** limitează curentul electric care trece prin leduri și butoane (rezistență de pull-down);​ 
 +   * **fire:** unește componentele.
  
 ===== Schema bloc ===== ===== Schema bloc =====
Line 35: Line 36:
  
 ===== Schemă electrică ===== ===== Schemă electrică =====
-{{:​pm:​prj2024:​ccontasel:​arduino_tiless_bb.png?​200|}}+{{:​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.1715977523.txt.gz · Last modified: 2024/05/17 23:25 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