This shows you the differences between two versions of the page.
pm:prj2022:ndrogeanu:joc_memorie_gesturi [2022/05/26 22:44] andrei.florea0405 [Software Design] |
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 5 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 | + | * 3 butoane: up, down, select/back |
- | * rezistoare | + | * rezistoare: 4 x 10K, 1 x 1K, 1 x 330, 1 x 100 |
=== Schema electrică === | === Schema electrică === | ||
- | {{:pm:prj2022:ndrogeanu:schematic_floreaandrei.png?750|}} | + | {{:pm:prj2022:ndrogeanu:schematic_floreaandrei.png?600|}} |
===== Software Design ===== | ===== Software Design ===== | ||
Line 70: | Line 74: | ||
===== 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 multiplayer, dar 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 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**. | + | 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> | ||