This shows you the differences between two versions of the page.
pm:prj2023:amocanu:gaming_console_with_one_game [2023/05/30 03:13] mihnea.virlan |
pm:prj2023:amocanu:gaming_console_with_one_game [2023/05/30 06:15] (current) mihnea.virlan |
||
---|---|---|---|
Line 4: | Line 4: | ||
===== 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. |
- | Lista de piese achiziționate până la momentul actual: | + | După un timp, se oprește shuffle-ul și jucătorul trebuie să aleagă cana care acoperă |
- | -GroundStudio Jade Uno+ | + | 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 |
- | -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 | + | |
- | </note> | + | |
- | 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. Pentru fiecare tip de alegere va fi difuzat un sunet corespunzător. 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 să codez un joc simplu 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 |
+ | cu interfața serială. | ||
===== Descriere generală ===== | ===== Descriere generală ===== | ||
Line 29: | Line 18: | ||
</note> | </note> | ||
- | {{:pm:prj2023:amocanu:diagrama_joc_arduino_virlan_mihnea_alexandru.jpg?300|}} | + | {{: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 | 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 | 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. 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ă'. | + | 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 43: | 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 49: | 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 71: | Line 85: | ||
</note> | </note> | ||
+ | {{:pm:prj2023:amocanu:proiectpm_virlan_mihnea-alexandru.zip|}} | ||
===== Jurnal ===== | ===== Jurnal ===== | ||
Line 78: | Line 93: | ||
*26 aprilie 2023 sosire prim lot piese (printre ele, LCD-ul, placa Arduino și cablurile I2C) | *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) | *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 84: | Line 102: | ||
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**. | ||
https://app.diagrams.net/ pentru ajutorul la schema bloc | https://app.diagrams.net/ pentru ajutorul la schema bloc | ||
+ | |||
https://ardushop.ro/ro/ pentru piese | 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> | </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> | ||