Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2023:dene:patriciaceausene.triviagame [2023/05/21 21:17]
oana.ceausene [Hardware Design]
pm:prj2023:dene:patriciaceausene.triviagame [2023/05/29 19:21] (current)
oana.ceausene [Concluzii]
Line 3: Line 3:
  
  
-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. +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.
 ===== Descriere generală ===== ===== 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.+Înainte de a începe concursul, jucătorii ​trebuie să apese un 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.
    
  
Line 51: Line 50:
  
 ===== Software Design ===== ===== Software Design =====
 +Proiectul a fost realizat în **Arduino IDE**.
 +În implementarea sa, am folosit următoarele 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 urmăreste 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 analogice 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
  
-<note tip> +Determinare variantă ​de răspuns:
-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 +
-</​note>​+
  
-===== Rezultate Obţinute =====+Pentru a afla ce răspuns a afle jucătorul, citesc valoarea de pe axa Ox. Dacă aceasta este mai mică decât 500, înseamna că joystick-ul a fost îndreptat spre stanga, adică a fost aleasă varianta A. În mod contrar, a fost aleasă optiunea B. În plus, pentru a evita citirea răspunsului înainte ca jucătorul sa fie sigur, am ales să citesc valoarea doar când butonul joystick-ului este apăsat (switch-ul).
  
-<note tip> 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. 
-</​note>​ 
  
 +
 +
 +
 +===== Rezultate Obţinute =====
 +
 +{{:​pm:​prj2023:​dene:​triviagame_final.jpeg?​700|}}
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Pentru mine, proiectul a reprezentat cea mai interesantă parte de la această materie, deoarece am avut ocazia să lucrez la o temă aleasă de mine, care să mă motiveze și la care să îmi facă placere să muncesc. Astfel, am ajuns să învăt într-un mod interactiv și să îmi descopăr o pasiune pe care, cu siguranță,​ o voi urma în continuare.
  
-<note warning>​ +Am reușit să realizez aproape tot ce mi-am propus. Un aspect la care a trebuit sa renunt a fost numărul variantelor de răspunsInițialmi-am dorit să existe 4 opțiunidar din cauza limitării numarului ​de caractere disponobile impuse de dimensiunea ecranului LCD a trebuit să mă rezum doar la 2. Am întâmpinat această problema șatunci când am ales întrebările, fiind nevoită să renunț la multe întrebări ​pe care mi-aș fi dorit să le adaug. Așadar, ​primă îmbunătățire pe care aș face ar fi să schimb ecranul cu unul mult mai mare.
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier READMEun ChangeLogun script ​de compilare şcopiere automată pe uC crează întotdeauna ​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**. +În plus, un aspect pe care l-am schimbat pe parcursul proiectului a fost categoria întrebărilor. Am considerat că ar fi mai interesant ca întrebările să fie pe tema PMAstfel, jocul poate rezolva dileme precum "Cine e mai bun la PM 8-)?" sau poate reprezenta un mod distractiv de a te pregăti pentru examen. Jocul poate fi foarte usor modificat pentru a se acoperi orice subiect ​de întrebări. 
-</​note>​+===== Download ===== 
 +{{:pm:prj2023:dene:triviagame-code.txt|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +**20 Aprilie** - Am decis tema finală a proiectului 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului. + 
-</​note>​+**27 Aprilie** - Am încarcat documentația inițiala a proiectului ​și am comandat piesele necesare 
 + 
 +**18 Mai** - Am terminat componenta hardware 
 + 
 +**25 Mai** - Am implementat codul proiectului 
 + 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ + 
-Listă ​cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**+Pentru realizarea schemelor electrice:​ 
-</note>+ 
 +https://​www.tinkercad.com/​dashboard  
 + 
 +Pentru folosirea joystick-ului:​ 
 + 
 +https://​arduinogetstarted.com/​tutorials/​arduino-joystick 
 + 
 +Pentru folosirea LCD-ului ​cu interfața I2C : 
 + 
 +https://​arduinogetstarted.com/​tutorials/​arduino-lcd-i2c 
 +https://ocw.cs.pub.ro/​courses/​pm/​lab/​lab6-2022 
 + 
 +Pentru folosirea mini difuzorului si redarea efectelor sonore: 
 + 
 +https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab3-2023 
 + 
 +Pentru folosirea senzorilor IR cu întreruperi:​ 
 + 
 +https://​circuitdigest.com/​microcontroller-projects/​interfacing-ir-sensor-module-with-arduino 
 +https://​ocw.cs.pub.ro/​courses/​pm/​lab/​lab2-2023 
 + 
 + 
 + 
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
  
  
pm/prj2023/dene/patriciaceausene.triviagame.1684693058.txt.gz · Last modified: 2023/05/21 21:17 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