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. După un timp, se oprește shuffle-ul și jucătorul trebuie să aleagă cana 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 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, comunicarea cu interfața serială.
Exemplu de schemă bloc: http://www.robs-projects.com/mp3proj/newplayer.html
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. 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ă' (UPDATE: Am renunțat la folosirea buzzer-ului).
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.
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.
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.
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