Proiectul constă într-un joc de trivia interactiv care testează cunoștințele jucătorilor cu întrebări single-choice. Jocul suportă până la trei jucători simultan, fiecare dintre aceștia având un led asociat pentru a indica cine va răspunde primul la întrebări. La final se va anunța câștigătorul printr-un sunet specific.
Scopul: Oferă o modalitate distractivă și educativă de a învăța și testa cunoștințele.
Idea de bază: Crearea unei modalitate de învățare care integrează tehnologia hardware în educație.
Utilitate: Util pentru învățare în medii educaționale, evenimente și acasă, îmbinând distracția cu educația.
Mediu de dezvoltare: Arduino IDE.
Prezentul proiect implementează un joc de trivia cu 3 jucători, utilizând următoarele biblioteci:
Wire.h: Utilizată pentru comunicarea I2C cu afișajele LCD.
LiquidCrystal_I2C.h: Bibliotecă pentru controlul afișajelor LCD I2C.
IRremote.h: Utilizată pentru detecția și decodificarea semnalelor infraroșii de la telecomandă.
Elementul de noutate al acestui proiect este integrarea unei funcționalități de răspuns la întrebări cu un mecanism de dezactivare temporară a butoanelor jucătorilor. Această caracteristică aduce o dinamică mai interesantă în cadrul jocului, impunând jucătorilor să fie atenți la momentul potrivit pentru a răspunde.
Funcționalitățile din laborator, precum utilizarea LCD-urilor, a senzorilor infraroșii și a LED-urilor, sunt integrate în acest proiect pentru a crea o experiență interactivă și atractiv vizual pentru jucători.
Scheletul proiectului constă din următoarele funcționalități principale:
Inițializarea și configurarea afișajelor LCD, receptorului IR și a pinilor de intrare/ieșire.
Definirea întrebărilor, variantelor de răspuns și a răspunsurilor corecte.
Afișarea întrebărilor și a variantelor de răspuns pe ecranul LCD mare.
Gestionarea apăsării butoanelor jucătorilor și a butoanelor de răspuns.
Actualizarea punctajelor jucătorilor și afișarea acestora pe ecranul LCD mic.
Detectarea și anunțarea câștigătorului, urmată de resetarea jocului.
Optimizări, precum dezactivarea temporară a butoanelor jucătorilor pentru a evita apăsări multiple.
Funcționalitățile proiectului au fost validate prin testare manuală, verificând comportamentul în diferite scenarii de joc, cum ar fi răspunsuri corecte/incorecte, atingerea scorului de câștig, resetarea jocului etc.
Optimizările realizate în cadrul acestui proiect sunt legate de dezactivarea temporară a butoanelor jucătorilor, pentru a evita apăsări multiple și a oferi o experiență de joc mai echitabilă. Această optimizare a fost implementată pentru a îmbunătăți interacțiunea cu jocul și a crește implicarea jucătorilor.
Aplicarea cunoștințelor dobândite în cadrul laboratoarelor se poate observa prin intermediul unor elemente cheie integrate precum:
Întreruperi:
Utilizarea întreruperilor asigură o reacție imediată a jocului la acțiunile jucătorilor, îmbunătățind semnificativ experiența de joc și reducând întârzierile.
Implementarea funcțiilor de gestionare a întreruperilor (handlePlayerButtonRed, handlePlayerButtonBlue, handlePlayerButtonYellow) demonstrează capacitatea de a configura și utiliza eficient mecanismele de întrerupere.
I2C:
Comunicație IR:
Funcțiilor principale din codul proiectului de trivia game:
setup():
Inițializarea și configurarea afișajelor LCD (lcdLarge și lcdSmall).
Configurarea modului pinilor pentru LED-uri, buzzer și butoane.
Inițializarea receptorului IR.
Pornirea jocului și afișarea primei întrebări.
updatePoints():
Actualizează punctajul jucătorului corespunzător.
Aprinde LED-ul jucătorului timp de 3 secunde.
Afișează actualizarea punctajului pe ecranul LCD mic.
Verifică dacă un jucător a câștigat.
announceWinner():
Afișează mesajul de câștig pe ecranul LCD mic și mare.
Redă o melodie pentru a anunța câștigătorul.
Apelează funcția resetGame() pentru a pregăti o nouă rundă.
resetGame():
Resetează punctajele jucătorilor la 0.
Afișează o numărătoare inversă pe ecranul LCD mare pentru a marca începutul unei noi runde.
Resetează variabilele și afișează prima întrebare.
Proiectul a fost o experiență interesantă, dificilă în prima parte neavând o experiență anterioară, dar totul s-a concluzionat în acumularea de foarte multe cunoștinte în câteva săptămâni.