Differences

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

Link to this comparison view

pm:prj2022:ionuto:chug-o-meter [2022/05/12 17:02]
cristiana.raducanu [Introducere]
pm:prj2022:ionuto:chug-o-meter [2022/05/31 22:19] (current)
cristiana.raducanu
Line 1: Line 1:
 ====== Chug-o-meter ====== ====== Chug-o-meter ======
 +Nume: Raducanu Cristiana\\
 +Grupă: 334CB
 ===== Introducere ===== ===== Introducere =====
 Chug-o-meter reprezinta un mic accesoriu de luat la iesiri sau la petreceri. El ia forma unei competitii de baut (responsabil),​ castigatorul fiind cel care poate termina cel mai rapid paharul. Este simplu si usor de folosit, avand butoane pentru fiecare start de runda si pentru fiecare player nou al rundei. Pe langa aceasta competitie, la final, participantii mai pot testa ceva in plus pentru un posibil nou turnament: cine a baut cel mai mult. Asadar, proiectul are atasat si o improvizatie de etilotest, nu la fel de estetic ca cel al politistilor,​ dar cu siguranta functional. Chug-o-meter reprezinta un mic accesoriu de luat la iesiri sau la petreceri. El ia forma unei competitii de baut (responsabil),​ castigatorul fiind cel care poate termina cel mai rapid paharul. Este simplu si usor de folosit, avand butoane pentru fiecare start de runda si pentru fiecare player nou al rundei. Pe langa aceasta competitie, la final, participantii mai pot testa ceva in plus pentru un posibil nou turnament: cine a baut cel mai mult. Asadar, proiectul are atasat si o improvizatie de etilotest, nu la fel de estetic ca cel al politistilor,​ dar cu siguranta functional.
Line 6: Line 8:
  
 ===== Descriere generală ===== ===== Descriere generală =====
- +{{ :​pm:​prj2022:​ionuto:​4.png?500 |}} 
-<note tip> +{{ :pm:prj2022:​ionuto:​cristiana2.png?500 |}} 
-O schemă bloc cu toate modulele proiectului vostru, atât software cât şi hardware însoţită de o descriere a acestora precum şi a modului în care interacţionează+Un timer va porni la ridicarea unei greutati (pahar) de pe senzorul de forta rezistiv, astfel incepand randul unui playerLa asezarea paharului la loc, acesta se va opri si timpul va fi salvat in memoria placutei. La finalul unei runde, va fi anuntat playerul pe ecranul LCD, impreuna cu aprinderea unor leduri si pornirea unui buzzer. Apoi, pentru "​etilotest",​ functioneaza asemanator dar de data aceasta informatia va fi adusa de senzorul de detectie alcool.
- +
-Exemplu de schemă blochttp://www.robs-projects.com/​mp3proj/​newplayer.html +
-</​note>​ +
 ===== Hardware Design ===== ===== Hardware Design =====
  
   * Arduino UNO (ATMega328p)   * Arduino UNO (ATMega328p)
-  * Ecran LCD 1602+  * Arduino NANO 
 +  * 2x Ecran LCD 1602 I2C
   * Rezistor pentru masurarea fortei de apasare FSR402   * Rezistor pentru masurarea fortei de apasare FSR402
   * Buzzer pasiv   * Buzzer pasiv
Line 24: Line 23:
   * 4x butoane push   * 4x butoane push
   * Tranzistor NPN-2N2222   * Tranzistor NPN-2N2222
-  * LED-uri red, blue, green, yellow ​5mm+  * LED-uri red, green 5mm
   * Senzor de alcool gazos MQ-3   * Senzor de alcool gazos MQ-3
   * Breadboard HQ    * Breadboard HQ 
   * Mini breadboard SYB-170   * Mini breadboard SYB-170
   * Fire de legatura   * Fire de legatura
 +
 +{{ :​pm:​prj2022:​ionuto:​whatsapp_image_2022-05-26_at_21.16.48.jpeg?​600 |}}
 +
 +{{ :​pm:​prj2022:​ionuto:​screenshot_2022-05-27_173053.png?​500 |}}
 ===== Software Design ===== ===== Software Design =====
  
 +Pentru implementarea acestui proiect am folosit IDE-ul Arduino. O biblioteca suplimentara folosita a fost LiquidCrystal_I2C.h.
  
-<note tip> +Chug-o-meterul
-Descrierea codului aplicaţiei (firmware)+In aceasta parte am setat si folosit 2 butoane, un buzzer, un ecran LCD, un rezistor pentru masurarea fortei. 
-  * mediu de dezvoltare (if any) (e.g. AVR StudioCodeVisionAVR) +Pentru implementarea aceasta am folosit o clasa separata pentru butonfiindu-mi astfel mai usor sa contorizezi actiunile celor doua butoaneIn cadrul acesteia am doua functii: init, unde setez modul pinului si ii citesc starea curenta, initiala, si onPress, unde salvez ultima stare a butonului ​(sa pot retine ca a fost apasat), si intorc apasat/neapasat.
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) +
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3surse şi funcţii implementate +
-</note>+
  
 +Am implementat un usor sistem de leaderboard pentru acest joc. Proiectul are doua butoane: unul de START JOC si unul de URMATORUL JUCATOR. De fiecare data cand START JOC este apasat, se restarteaza un leaderboard si numarul de jucatori. Apoi se va afisa pe rand mesajul "GET READY!"​ impreuna cu numarul jucatorului curent, asteptandu-se un nou pahar pus. Dupa ce un player a terminat de baut si a pus paharul la loc, va fi apasat butonul URMATORUL JUCATOR, astfel pastrandu-se scorul sau in leaderboard si resetandu-se timerul pentru urmatorul. Am ales sa implementez cu un numar maxim de jucatori, astfel cand se va incerca participarea unui numar mai mare, jocul se va reseta, afisand bineinteles intai castigatorul curent.
 +
 +Functia winner() trece prin urmatorii pasi:
 +-afiseaza mesajul de final de joc;
 +-calculeaza castigatorul,​ facand minimul dintre timpii playerilor;
 +-afiseaza numarul castigatorului;​
 +-reseteaza leaderboard-ul si numar jucatorilor;​
 +
 +Functia get_force() imi intoarce valoarea citita de rezistor si o transforma intr-un format human-readable,​ urmand apoi sa fie folosita pentru functionarea jocului.
 +Pentru sunetul de la finalul unui joc, am adaugat notele sunetului de "​hooray"​ in fisierul Notes.h, folosindu-ma apoi de functia tone() pentru a reda melodai respectiva. Aceasta parte am implementat-o in functia song().
 +
 +Partea de etilotest:
 +Codul este unul simplu, in functie de valoarea extrasa de la senzorul de gaze, se stabileste starea utilizatorului:​ baut/nu. Rezultatul acestui test este afisat pe un ecran LCD, impreuna cu un mesaj drept reactie. De asemenea, impreuna cu rezultatul afisat se va aprinde un LED de culoare corespunzatoare:​ rosu daca a depasit limita alcoolului, verde in caz contrar.
 +Asadar, in setup() initializez cursorul, las un timp de asteptare pentru senzorul ce trebuie intai sa se incalzeasca,​ setezi pinii ledurilor.
 +In loop() citesc valoarea senzorului, apoi in functie de aceasta afisez pe LCD si aprind unul din leduri.
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +In final, am avut mici probleme cu etilotestul..senzorul fiind nu foarte sensibil :D si nu nimereste chiar intotdeauna. 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+De asemenea, ​au fost batai de cap si cu senzorul de presiune, cautand acel sweet spot pentru prea multa vreme de fiecare data cand testam
-</note>+Jos adaug un demo unde aceste obstacole nu se observa! Ideal version: :\\ 
 +[[https://​youtu.be/​gqYhxZOUpR4]] 
  
 ===== Concluzii ===== ===== Concluzii =====
  
 +In urma proiectului am invatat, inclusiv strict in cautarea unei idei pentru proiect, diverse aspecte ale microprocesoarelor. A fost o experienta placuta si sper ca pe viitor sa pot face lucruri mai complexe de atat folosind diverse componente si o parte de software mai complexa.
 ===== Download ===== ===== Download =====
- +{{:pm:prj2022:ionuto:raducanucristiana334cb.zip|}}
-<note warning>​ +
-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**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
  
-<note tip> +   * 09.05 - Crearea paginii proiectului incluzand ​scurta descriere 
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul de proiect progresul ​proiectului. +   * 15.05 - Comandarea tuturor pieselor necesare 
-</​note>​+   * 20.05 - First try - realizarea partii ​de etilotest a proiectului 
 +   * 22.05 - Second try - prima incercare a chugometerului - probleme cu placuta UNO; 
 +   * 24.05 - Achizitionarea unei noi placute :D 
 +   * 26.05 - Finalizarea proiectului fizic, a codului 
 +   * 27.05 - Completarea documentatiei
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. 
-</​note>​ 
  
 <​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/prj2022/ionuto/chug-o-meter.1652364166.txt.gz · Last modified: 2022/05/12 17:02 by cristiana.raducanu
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