This is an old revision of the document!


Trivia Game

Introducere

Proiectul constă în realizarea unui joc trivia de tip 1v1. Întrebările vor fi afișate pe un ecran LCD și cel mai rapid jucător va avea șansa să răspundă la întrebare câștigând sau pierzând puncte. În funcție de răspunsul dat, se va aprinde un LED rosu/verde și va fi redată o anumită melodie. Răspunsul jucătorului va fi preluat cu ajutorul unui modul joystick. În plus, jucătorii pot alege categoria din care vor fi intrebările.

Descriere generală

Înainte de a începe concursul, jucătorii aleg subiectul întrebărilor (PM sau cultură generală) prin apăsarea unui buton. Apoi, prima întrebare va aparea pe ecranul LCD. Primul jucător care va atinge senzorul infrarosu va avea oportunitatea să răspundă la întrebare și să câștige sau să piardă puncte. Pentru a alege o variantă de raspuns, utilizatorul va folosi un joystick.

Schemă bloc

Hardware Design

Lista piese:

  • Arduino Uno
  • Cablu USB
  • Breadboard 400
  • Modul Joystick PS2
  • Modul afisaj LCD cu lumina de fundal albastră și I2C
  • Mini difuzor Brick
  • Infrared Obstacle Sensor
  • LED roșu
  • LED verde
  • Rezistențe
  • Buton
  • Fire

Schema circuit:

Scheme electrice:

Rezultat practic:

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

Proiectul a fost realizat în Arduino IDE. În implementarea sa, am folosit urmatoarele biblioteci

  • LiquidCrystal_I2C.h → facilitează interacțiunea cu ecranele LCD cu interfață I2C și oferă funcții pentru a afișa texte
  • Wire.h → facilitează inițializarea, transmiterea și recepționarea de date prin I2C
  • PinChangeInterrupt.h → pentru a permite întreruperi pe pini de schimbare a stării (pin change interrupts)

Jocul urmareste acest workflow:

  • etapa 0 → se afșează un mesaj de început și se așteaptă începerea jocului prin apăsarea unui buton
  • etapa 1 → se afișează random o intrebare
  • etapa 2 → se așteaptă declanșarea unei întreruperi setată pe cei doi senzori IR care determină a cărui jucător este runda actuală
  • etapa 3 → se afișează jucătorul curent
  • etapa 4 → se afișează variantele de răspuns pentru întrebarea afișată anterior
  • etapa 5 → se așteapta declanșarea unei întreruperi setată pe butonul joystick-ului pentru a citi valorile anlogice de pe axele Ox si Oy ale joystick-ului și a determina varianta de răspuns aleasă de jucător
  • etapa 6 → se verifică răspunsul, se calculează noul scor si urmează un joc de lumini și sunete în funcție de corectitudinea răspunsului; apoi, se trece in etapa 1 pentru a se afișa următoarea întrebare
  • etapa 7 → jocul s-a terminat, se afișeaza rezultatul jocului + efecte de final

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

pm/prj2023/dene/patriciaceausene.triviagame.1685363512.txt.gz · Last modified: 2023/05/29 15:31 by oana.ceausene
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0