Trivia Game
Introducere
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.
Descriere generală
Schema bloc:
Hardware Design
Componente hardware:
Arduino UNO R3
LCD 16×2 I2C - afisarea întrebărilor
3 butoane - a se răspunde la întrebări de cei 3 jucători
Buzzer - a anunța câștigătorul (la 5 puncte acumulate de un jucător)
Led-uri - a evidenția cine va răspunde
Telecomandă + senzor IR - a trece prin întrebări
Breadboard, Fire, Rezistente
Schema electrica
Conexiuni componente hardware
Afișaje LCD:
lcdLarge (LCD 20×4):
Adresă I2C: 0x26
Conexiuni:
SDA (Serial Data) - conectat la pinul SDA al microcontrolerului
SCL (Serial Clock) - conectat la pinul SCL al microcontrolerului
VCC - alimentat cu tensiunea de alimentare
GND - legat la masă
lcdSmall (LCD 16×2):
Adresă I2C: 0x27
Conexiuni:
SDA (Serial Data) - conectat la pinul SDA al microcontrolerului
SCL (Serial Clock) - conectat la pinul SCL al microcontrolerului
VCC - alimentat cu tensiunea de alimentare
GND - legat la masă
Receptorul IR:
LED-uri:
Pini utilizați:
ledRed = 1
ledBlue = 2
ledYellow = 3
Conexiuni:
Fiecare LED este conectat la câte un pin digital al microcontrolerului
Anozi LED-urilor sunt conectați la pinii respectivi
Catozi LED-urilor sunt conectați la masă prin rezistoare de limitare a curentului
Butoane jucătorilor:
Pini utilizați:
playerButtonRed = 4
playerButtonBlue = 5
playerButtonYellow = 6
Conexiuni:
Fiecare buton este conectat la câte un pin digital al microcontrolerului
Butoanele sunt configurate pentru a genera întreruperi la apăsare (FALLING)
Butoanele sunt conectate la VCC prin rezistoare de pull-up
Butoane de răspuns:
Pini utilizați:
buttonA = 10
buttonB = 11
buttonC = 12
buttonD = 13
Conexiuni:
Buzzer:
Pin utilizat: buzzer = 9
Conexiuni:
Componente conectate
Hardware 16.05.2024
Hardware 22.05.2024
Software Design
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.
Rezultate Obţinute
Funcționalitate completă a jocului
Implementarea cu succes a întregului joc, de la afișarea întrebărilor și gestionarea răspunsurilor, la actualizarea punctajelor și detectarea câștigătorului.
Integrarea armonioasă a interacțiunii jucătorilor prin butoane și senzori IR.
Experiență de joc îmbunătățită
Atingerea obiectivelor de învățare
Dezvoltarea cunoștințelor de programare în mediul de dezvoltare Arduino IDE.
Conexiunea între software și hardware
Testare manuală și vizuală
Concluzii
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.
Download
Jurnal
20 aprilie: alegerea temei
22 aprilie: research piese
1 mai : realizare documentație + schema în tinkercad
6 mai : comandat piese
14 mai: finalizare hardware
21 mai: finalizare software + adăugare de câteva componente hardware
23 mai: prezentare proiect
Bibliografie/Resurse