This is an old revision of the document!
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
Descrierea codului aplicaţiei (firmware):
mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR)
librării şi surse 3rd-party (e.g. Procyon AVRlib)
algoritmi şi structuri pe care plănuiţi să le implementaţi
(etapa 3) surse şi funcţii implementate
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.
Arhiva proiectului: 332cc_girnita_alexandra_claudia_triviagame.zip
Rezultate Obţinute
Care au fost rezultatele obţinute în urma realizării proiectului vostru.
Concluzii
Download
O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului: surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună

.
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.
Jurnal
Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului.
Bibliografie/Resurse
Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe Resurse Software şi Resurse Hardware.
Export to PDF