This shows you the differences between two versions of the page.
|
pm:prj2023:amocanu:gaming_console_with_one_game [2023/05/07 17:48] mihnea.virlan created |
pm:prj2023:amocanu:gaming_console_with_one_game [2023/05/30 06:15] (current) mihnea.virlan |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Consolă de gaming cu un joc ====== | ====== Consolă de gaming cu un joc ====== | ||
| + | * Nume: VÎRLAN Mihnea-Alexandru | ||
| + | * Grupa: 331CB | ||
| ===== Introducere ===== | ===== Introducere ===== | ||
| - | <note tip> | + | Proiectul constă în asigurarea mediului pentru a juca un joc relativ simplu: se dau 3 căni și o bilă. La întâmplare, o cană acoperă mingiuța și se amestecă toate cănile. Prin amestecare, se înțelege schimbarea pozițiilor tuturor cănilor. |
| - | Prezentarea pe scurt a proiectului vostru: | + | După un timp, se oprește shuffle-ul și jucătorul trebuie să aleagă cana care acoperă |
| - | + | ||
| - | Proiectul constă în asigurarea mediului pentru a juca un joc relativ simplu: se dau 3 pahare și o bilă. La întâmplare, un | + | |
| - | pahar acoperă mingiuța și se amestecă toate paharele. Prin amestecare, se înțelege schimbarea pozițiilor tuturor paharelor. | + | |
| - | După un timp relativ mic (aproximativ 10 secunde), se oprește shuffle-ul și jucătorul trebuie să aleagă paharul care acoperă | + | |
| bila. Ideea de la care am pornit pleacă de la faptul că la cursul elemente de grafică pe calculator am căpătat un insight | bila. Ideea de la care am pornit pleacă de la faptul că la cursul elemente de grafică pe calculator am căpătat un insight | ||
| - | legat de munca din spatele unui joc și pentru că îmi este mai convenabil un joc decât să lucrez cu senzori. | + | legat de munca din spatele unui joc și pentru că îmi este mai convenabil să codez un joc simplu decât să lucrez cu senzori. |
| - | Consider că proiectul va fi util, deoarece voi învăța cum să îmbin noțiuni din câteva laboaratoare: timere, întreruperi, I2C. | + | Consider că proiectul va fi util, deoarece voi învăța cum să îmbin noțiuni din câteva laboaratoare: timere, întreruperi, I2C, comunicarea |
| - | </note> | + | cu interfața serială. |
| ===== Descriere generală ===== | ===== Descriere generală ===== | ||
| Line 18: | Line 16: | ||
| Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html | ||
| + | |||
| </note> | </note> | ||
| + | {{:pm:prj2023:amocanu:diagrama_joc_arduino_virlan_mihnea_alexandru_1.jpg?300|}} | ||
| + | Utilizatorul are la dispoziție 3 butoane: unul pentru a muta cursorul la stânga, altul pentru mutare cursor la dreapta și unul pentru | ||
| + | a alege opțiunea (în cazul nostru paharul) pe care utilizatorul o consideră corectă. La oricare dintre cele 3 apăsări, prin intermediul plăcii | ||
| + | Arduino, modificarea va fi vizibilă pe ecranul LCD. <del>Pentru o alegere corectă, va fi difuzat suplimentar un sunet (posibil că va fi ori 'Felicitări', ori 'Bravo'), iar pentru o alegere incorectă se va auzi 'Mai încearcă'</del> (UPDATE: Am renunțat la folosirea buzzer-ului). | ||
| ===== Hardware Design ===== | ===== Hardware Design ===== | ||
| Line 29: | Line 32: | ||
| * rezultatele simulării | * rezultatele simulării | ||
| </note> | </note> | ||
| + | Lista de piese achiziționate până la momentul actual: | ||
| + | -GroundStudio Jade Uno+ | ||
| + | -Display OLED 0.96" I2C Albastru JMD0.96D-1 | ||
| + | -<del>Cabluri SH-4P I2C 3V3 compatibil QWIIC/STEMMA - Lungime : 50mm </del> | ||
| + | -Breadboard | ||
| + | -Fire Dupont tată-tată <del> și mamă-tată</del> | ||
| + | -Butoane Push Button | ||
| + | -<del>Buzzer</del> | ||
| + | -Rezistențe | ||
| + | {{:pm:prj2023:amocanu:poza_alcatuire_hardware_virlan_mihnea-alexandru.v1.jpg?700|}} | ||
| ===== Software Design ===== | ===== Software Design ===== | ||
| Line 35: | Line 47: | ||
| <note tip> | <note tip> | ||
| Descrierea codului aplicaţiei (firmware): | Descrierea codului aplicaţiei (firmware): | ||
| - | * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) | + | * Am scris codul în ARDUINO IDE, versiunea 2.1.0 |
| - | * librării şi surse 3rd-party (e.g. Procyon AVRlib) | + | * Pe post de librării ADAFRUIT_GFX.h și ADAFRUIT_SSD1306.h |
| - | * algoritmi şi structuri pe care plănuiţi să le implementaţi | + | |
| - | * (etapa 3) surse şi funcţii implementate | + | |
| </note> | </note> | ||
| + | Programul este împărțit în mai multe faze: | ||
| + | - folosind interfața serială primim ca parametru viteza cu care cănile se mișcă pe orizontală. Motivul pentru care am recurs la acest lucru se datorează dorinței ca jucătorii să-și poată încerca reflexele, variind viteza jocului. | ||
| + | - se alege aleator cana care va acoperi bila. | ||
| + | - apoi, folosind permutări, amestecăm cănile, ținându-se cont de viteza primită. | ||
| + | - După 4 runde de amestec, acestea încetează, iar jucătorul alege cana în care se află bila | ||
| + | - Dacă nimerește răspunsul corect, se dezvăluie bila și se ridică cana, altfel mai încearcă | ||
| + | Pentru a alege cana, se utilizează 3 butoane: două pentru alegere stânga dreapta, iar unul de mijloc pentru confirmare. Pentru asta, | ||
| + | am folosit întreruperi hardware. | ||
| + | |||
| + | În timpul alegerii paharului, la interval de 2 secunde se afișează mesajul ”Succes” pentru a încuraja astfel jucătorul. | ||
| + | Observația fundamentală este: se poate da oricând prin interfața serială, de la tastaură o viteză, dar aceasta își va face efectul după | ||
| + | ce a fost găsită bila. Dacă la finalul găsirii bilei nu s-a dat vreun input, viteza va deveni cea default. | ||
| + | |||
| + | |||
| + | Ca o notă importantă: pentru cod am avut nevoie de imaginea unei căni proprii, imagine pe care am transformat-o în cod | ||
| + | folosind un site ce va fi menționat la resurse/bibliografie. | ||
| + | |||
| ===== Rezultate Obţinute ===== | ===== Rezultate Obţinute ===== | ||
| <note tip> | <note tip> | ||
| - | Care au fost rezultatele obţinute în urma realizării proiectului vostru. | + | Jocul funcționează foarte bine. Fiindcă nu am folosit debounce, e posibil ca o apăsare mai lungă să arunce cursorul din ecran. |
| </note> | </note> | ||
| ===== Concluzii ===== | ===== Concluzii ===== | ||
| + | Era ok dacă aveam curajul să fac un proiect poate chiar mai complex, dar frica de electronică m-a restrâns. Pe lângă asta, am | ||
| + | profitat de faptul că am căpătat experiență în scrierea unui joculeț în C. | ||
| ===== Download ===== | ===== Download ===== | ||
| Line 57: | Line 85: | ||
| </note> | </note> | ||
| + | {{:pm:prj2023:amocanu:proiectpm_virlan_mihnea-alexandru.zip|}} | ||
| ===== Jurnal ===== | ===== Jurnal ===== | ||
| Line 62: | Line 91: | ||
| Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. | ||
| </note> | </note> | ||
| + | *26 aprilie 2023 sosire prim lot piese (printre ele, LCD-ul, placa Arduino și cablurile I2C) | ||
| + | *5 mai 2023 al doilea lot de piese (celelalte piese menționate) | ||
| + | *22 mai 2023 finalizare hardware | ||
| + | *29-30 mai 2023 finalizare proiect | ||
| + | *Din cauza unor conflicte software ce nu au mai putut fi investigate la timp, am decis să nu mai folosesc buzzer | ||
| ===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
| Line 67: | Line 101: | ||
| <note> | <note> | ||
| Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. | ||
| - | </note> | + | https://app.diagrams.net/ pentru ajutorul la schema bloc |
| + | https://ardushop.ro/ro/ pentru piese | ||
| + | |||
| + | https://github.com/adafruit/Adafruit_SSD1306 și https://github.com/adafruit/Adafruit_SSD1306 pentru interacțiunea cu LCD-ul OLED | ||
| + | |||
| + | https://randomnerdtutorials.com/guide-for-oled-display-with-arduino/ m-a ajutat pentru a învăța cum să interacționez cu LCD-ul | ||
| + | |||
| + | https://javl.github.io/image2cpp/ pentru codificare de imagini | ||
| + | |||
| + | </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> | ||