Proiectul presupune un Drinking Game pentru a ridica spiritele studenților după sesiune. Combină mai multe jocuri ca și:
într-un singur mecanism.
Scopul este ca jucătorii să iasă din zona de confort, să se descopere unul pe celălalt, să lege prietenii de sânge și, evident, să se facă muci.
Cum am zis, proiectul e un Drinking game.
Practic, daca jucatorul alege sa faca provocarea/ sa raspunda la întrebare, se trece la urmatorul jucător.
Daca nu face provocarea/raspunde la întrebare, va trebui să bea, după care se trece la următorul jucător.
De asemenea, o sa am un buzzer care scoate sunete la intervale relativ random, semnal pentru jucatori sa bea. Ultimul care bea va trebuie sa mai bea inca o dată - ca să nu se plictisească restul.
Piese folosite:
Dezvoltarea codului am realizat-o in Arduino IDE (care ar putea fi mult mai imbunatatit)
Pe partea de software am folosit bibliotecile:
Pentru generarea categoriilor am creat un array bidimensional numit categories[][], in care primul element e marimea sirului de caractere.
Pentru fiecare categorie am creat alte tabele, urmand exemplul celui de mai sus.
Am setat ca pini de input butoanele, iar ca output Servomotorul si LCD-ul.
Deoarece am avut nevoie de mai multe generari de numere random, am cautat o metoda de a crea aceste numere cu un seed de asemenea random: conectand la pinul analog A0 un fir lasat in aer → iar valoarea aceasta sa fie folosita pentru randomSeed().
Functia randomFunction() ia ca parametru un int de la 1 la 3 (pentru cele 3 cazuri de butoane) si in cadrul switchului returneaza valori pentru toate butoanele. De exemplu: daca vreau sa se invarta servomotorul pentru un timp random (de la 1 la 3 secunde), functia returneaza un numar de la 1 la 5. Daca apas butonul de generare de categorii → se returneaza un numar de la 1 la 5.
Aceste rezultate sunt ulterior tratate in loop pentru delay-ul servomotorului si indexul intrebarilor.
Pentru afisarea intrebarilor a trebuit sa mai fac o functie, [b]chooseQuestion(int category, int questionIndex)[/b], care leaga practic indexul categoriei cu categoria de intrebari in sine si printeaza la LCD intrebarea.
In afara de fuctionarea principala, am adaugat niste tonuri (la fel, random) in loop. Sunetul porneste la un interval intre 1 si 3 minute: semnal pentru jucatori sa dea un shot :)
Functiile folosite in cod:
Deși proiectul nu pare să fie foarte complex nici din punct de vedere software și nici hardware, am pus accentul pe design și pe funcționalitate. Am vrut să creez un joc care să fie eventual folosit, îmbunătățit și care să rămână ca amintire :)
Probleme am intampinat si la crearea schemei 3d si printarea acesteia (am masurat prea la fix, nu incape cum trebuie inauntru nici placa nici breadboardul, nici lcd-ul; iar de printat ar fi trebuit sa printez gaurile acesteia pe laturi, nu pe fata de sus a paralelipipedului, fiindca imprimanta nu mi-a facut o baza si practic printa in aer, iar acum inauntru e foarte urat).
Am petrecut mult timp pe partea de debugging în cod și am căutat soluții pentru probleme de genul: Arduino nu lucreaza bine pe stringuri, are memorie foarte limitată RAM.