This shows you the differences between two versions of the page.
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.g. AVR 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> | + | |