Differences

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

Link to this comparison view

pm:prj2022:ndrogeanu:joc_memorie_gesturi [2022/04/21 16:27]
andrei.florea0405 adaugat autor
pm:prj2022:ndrogeanu:joc_memorie_gesturi [2022/05/26 23:58] (current)
andrei.florea0405 [Hardware Design]
Line 17: Line 17:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-Inițial, pe ecran apare un meniu prin care se poate selecta începerea unui joc nou sau afișarea leaderboard-ului.+Inițial, pe ecran apare un meniu prin care se poate selecta începerea unui joc în modul singleplayer,​ multiplayer ​sau afișarea leaderboard-ului.
  
-Dacă se alege începerea unui joc nou, se începe cu prima rundă: o singură direcție este redată pe matricea de led-uri +Dacă se alege începerea unui joc singleplayer, se începe cu prima rundă: o singură direcție este redată pe matricea de led-uri 
-și jucătorul are la dispoziție ​secunde să realizeze gestul corespunzător.+și jucătorul are la dispoziție ​10 secunde să realizeze gestul corespunzător.
  
 Dacă a reprodus corect, jocul se continuă, la runda următoare jucătorul având de reprodus o secvență mai lungă, într-un timp mai mare. Dacă a reprodus corect, jocul se continuă, la runda următoare jucătorul având de reprodus o secvență mai lungă, într-un timp mai mare.
-Dacă a reprodus greșit secvența, jucătorul pierde o viață din cele 3 afișate pe panoul LCD.+Dacă a reprodus greșit secvența, jucătorul pierde o viață din cele 3 afișate pe ecran.
  
-Jocul se încheie atunci când cele 3 vieți sunt epuizate, iar scorul este salvat pe cardul SD.+Jocul se încheie atunci când cele 3 vieți sunt epuizate ​sau când timpul rundei a expirat, iar scorul este salvat pe cardul SD dacă este suficient de bun. 
 + 
 +Dacă se alege începerea unui joc multiplayer,​ din nou, vor fi runde care cresc în dificultate. Spre deosebire de varianta singleplayer,​ unde secvența era generată aleator, în varianta multiplayer,​ un jucător va crea secvența, urmând ca celălalt să o memoreze și să o reproducă. Rolurile se inversează în cadrul aceleiași runde. 
 + 
 +Primul jucător care nu poate reproduce secvența celuilalt pierde.
  
 Dacă din meniul principal este selectată afișarea leaderboard-ului,​ vor apărea pe ecran cele mai bune scoruri obținute Dacă din meniul principal este selectată afișarea leaderboard-ului,​ vor apărea pe ecran cele mai bune scoruri obținute
-de-a lungul timpului, cu posibilitatea de scrolling.+de-a lungul timpului ​în modul de joc singleplayer, cu posibilitatea de scrolling ​cu ajutorul a două butoane. 
 + 
 +=== Schema bloc ===
  
-{{ :​pm:​prj2022:​ndrogeanu:​floreaandrei_schema_bloc.png?500 |}}+{{ :​pm:​prj2022:​ndrogeanu:​florea_andrei_schema_bloc.drawio.png?500 |}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
Line 40: Line 46:
   * senzor gesturi APDS-9960   * senzor gesturi APDS-9960
   * ecran LCD Nokia 5510   * ecran LCD Nokia 5510
-  * matrice de LED-uri MAX7219 
   * buzzer   * buzzer
-  * modul card SD +  * modul card microSD 
-  * card SD +  * card microSD 
-  * butoane +  * butoane: up, down, select/back 
-  * rezistoare+  * rezistoare: 4 x 10K, 1 x 1K, 1 x 330, 1 x 100 
  
-<note tip> +=== Schema electrică ===
-Aici puneţi tot ce ţine de hardware design: +
-  * listă de piese +
-  * scheme electrice (se pot lua şi de pe Internet şi din datasheet-uri,​ e.g. http://​www.captain.at/​electronic-atmega16-mmc-schematic.png) +
-  * diagrame de semnal  +
-  * rezultatele simulării +
-</​note>​+
  
 +{{:​pm:​prj2022:​ndrogeanu:​schematic_floreaandrei.png?​600|}}
 ===== Software Design ===== ===== Software Design =====
  
 +    * Mediul de dezvoltare: Arduino IDE
  
-<note tip> +    * biblioteci folosite: 
-Descrierea codului aplicaţiei ​(firmware): +        * SparkFun_APDS9960 ​(senzorul de gesturi
-  mediu de dezvoltare ​(if any) (e.g. AVR Studio, CodeVisionAVR+        Adafruit_PCD8544 și Adafruit_GFX ​(display Nokia 5110) 
-  librării şi surse 3rd-party (e.gProcyon AVRlib) +        * PF (card microSD)  
-  algoritmi şi structuri ​pe care plănuiţi să le implementaţ+ 
-  * (etapa 3) surse şi funcţii implementate +    ​* surse folosite în implementare:​ 
-</​note>​+        * memory_game.ino ​sursa principala; face setup-ul componentelor și implementează navigarea în meniul jocului; conține și funcții pentru generarea diferitelor sunete pentru buzzer 
 +        * apds.cpp, apds.h - surse cu functii specifice senzorului de gesturi 
 +        lcd_draw.cpp,​ lcd_draw.h - surse pentru afisarea ​pe ecran; conțin funcții apelate din alte păale codului pentru afișarea unei pagini particulare din meniu sau joc 
 +        leaderboard.cpp,​ leaderboard.h - surse pentru manipularea celor mai bune scoruri ​(citire/​scriere pe cardul microSD, afișare pe ecran în mai multe pagini a leaderboard-ului) 
 +        * singleplayer.cpp,​ singleplayer.h - surse pentru varianta singleplayer a jocului 
 +        * multiplayer.cpp,​ multiplayer.h - surse pentru varianta multiplayer a jocului
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +[[https://​www.youtube.com/​watch?​v=-b35BOww8mc|Link demo]] 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</​note>​+\\ 
 +Imagine cu meniul principal 
 + 
 +{{ :​pm:​prj2022:​ndrogeanu:​florea_andrei_rezultat_meniu.jpeg?600 |}} 
 + 
 +\\ 
 +\\ 
 +Imagine în timpul jocului 
 + 
 +{{ :​pm:​prj2022:​ndrogeanu:​florea_andrei_rezultat_joc.jpeg?​600 |}}
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Deși au apărut mai multe situații neprevăzute (bibliotecile uzuale nu se încadrau în memorie împreună, așa că am fost nevoit să folosesc una lightweight pentru microSD, senzorul de gesturi începuse după câteva zile să indice un gest atunci când nu era cazul, am rezolvat editând biblioteca sa), cred că în final m-am descurcat.
  
-<note warning>​ +La început nu am crezut că o să am timp să fac ceva precum ​un mod multiplayerdar fiindcă ideea a părut interesantă am încercat să adaug și acest mod în implementare.
-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 ChangeLogun 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**+Per total, chiar cred că a rezultat un joc interesant
-</​note>​+===== Download =====
  
 +    * Cod sursă: {{:​pm:​prj2022:​ndrogeanu:​florea_andrei_memory_game.zip|memory_game.zip}}
 +    * {{:​pm:​prj2022:​ndrogeanu:​florea_andrei_readme.txt|README}}
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +    * 20.04.2022 - Alegere temă proiect 
-Puteți avea și o secțiune ​de jurnal în care să poată urmări asistentul de proiect progresul proiectului+    * 21.04.2022 - Publicare pagină, adăugare introducere,​ descriere generală, schemă bloc, listă componente 
-</​note>​+    * 06.05.2022 - Au ajuns componentele 
 +    * 19.05.2022 - Testarea individuală a componentelor 
 +    * 20.05.2022 - Lipirea senzorului de gesturi ​și a matricii ​de LED-uri (din păcate nu am reușit ​să o fac să funcționeze) 
 +    * 21.05.2022 - Realizarea meniului principal, a paginii cu leaderboard-ul (cu date aleatoare, nu integrasem încă modulul microSD) 
 +    * 22.05.2022 - Am realizat că se umplea memoria RAM, ducând la un comportament nedefinit, înlocuire bibliotecă SD.h cu PF.h 
 +    * 24.05.2022 - Modul singleplayer 
 +    * 26.05.2022 - Documentație completă pentru Milestone 2, joc complet funcțional,​ inclusiv modul multiplayer
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +    * [[https://​ocw.cs.pub.ro/​courses/​_media/​pm/​doc8272.pdf|]]
 +    * [[https://​github.com/​sparkfun/​APDS-9960_RGB_and_Gesture_Sensor|]]
 +    * [[https://​github.com/​adafruit/​Adafruit-PCD8544-Nokia-5110-LCD-library|]]
 +    * [[https://​github.com/​Master811129/​PF|]]
 +    * [[https://​lastminuteengineers.com/​nokia-5110-lcd-arduino-tutorial/​|]]
 +    * [[https://​learn.sparkfun.com/​tutorials/​apds-9960-rgb-and-gesture-sensor-hookup-guide/​all|]]
 +    * [[https://​github.com/​Rodot/​BitmapEncoder|]]
 +    * [[https://​www.arduino.cc/​reference/​en/​language/​functions/​advanced-io/​tone/​|]]
 +
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
pm/prj2022/ndrogeanu/joc_memorie_gesturi.1650547666.txt.gz · Last modified: 2022/04/21 16:27 by andrei.florea0405
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