Differences

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

Link to this comparison view

pm:prj2023:fstancu:georgina [2023/05/02 19:18]
georgina.poting [Descriere generală]
pm:prj2023:fstancu:georgina [2023/05/29 23:40] (current)
georgina.poting [Software Design]
Line 9: Line 9:
  
 Scopul este ca jucătorii să iasă din zona de confort, să se descopere unul pe celălalt, să lege prietenii de sânge și, **evident**,​ să se facă muci. Scopul este ca jucătorii să iasă din zona de confort, să se descopere unul pe celălalt, să lege prietenii de sânge și, **evident**,​ să se facă muci.
 +<note tip>Am ales sa fac acest proiect pentru ca să combin activitățile mele preferate: board games și petrecutul cu băutură. Știu sigur că proiectul ăsta va fi utilizat și înafara materiei de PM.</​note>​
  
 <​note>​Perfect pentru cercurile de prieteni ai prietenilor,​ când nu-i cunoști pe restul destul de bine și vrei să ieși din awkward silence.</​note>​ <​note>​Perfect pentru cercurile de prieteni ai prietenilor,​ când nu-i cunoști pe restul destul de bine și vrei să ieși din awkward silence.</​note>​
 +
 ===== Descriere generală ===== ===== Descriere generală =====
 +
 +Cum am zis, proiectul e un Drinking game.
 +
 +<​note>​
 +Flow-ul este următorul: ​
 +
 +  -Se apasă un buton care activeaza servomotorul si se opreste random la un jucator.
 +  - Se apasă al doilea buton care afiseaza pe LCD una din mai multe categorii de jocuri Random: truth or dare, physical challenge, etc.
 +  - Se apasă un al treilea buton care afiseaza pe LCD intrebarea/​provocarea în sine.
 +
 +Practic, daca jucatorul alege sa faca provocarea/ sa raspunda la întrebare, se trece la urmatorul jucător.
 +
 +Daca nu face provocarea/​raspunde la întrebare, va trebui să bea, după care se trece la următorul jucător.
 +
 +De asemenea, o sa am un buzzer care scoate sunete la intervale relativ random, semnal pentru jucatori sa bea. Ultimul care bea va trebuie sa mai bea inca o dată - ca să nu se plictisească restul.
 +</​note>​
  
 === Schema bloc === === Schema bloc ===
-{{ :​pm:​prj2023:​fstancu:​schema_bloc_muci.png?700 |}}+{{ :​pm:​prj2023:​fstancu:​itiaratskema.jpg?600 |}}
  
 <note tip> <note tip>
-O schemă bloc cu toate modulele proiectului vostruatât software cât şi hardware însoţită ​de o descriere a acestora precum şi a modului în care interacţionează. +Inputul vine din exterior, de la jucătoriAceștia activează butoanele pentru ca să activeze prin intermediul Arduino servomotorul și LCD-ulServomotorul decide următorul jucător și LCD-ul afișează provocările jucătorilor
- +
-Exemplu de schemă bloc: http://​www.robs-projects.com/​mp3proj/​newplayer.html+
 </​note>​ </​note>​
  
Line 27: Line 43:
   * Arduino UNO   * Arduino UNO
   * Buzzer   * Buzzer
-  * LCD+  * LCD 20x4
   * x3 Butoane   * x3 Butoane
   * Servomotor   * Servomotor
  
-Schema circuitului:​+=== Design-ul cutiei 3d: === 
 + 
 +{{ :​pm:​prj2023:​fstancu:​hardware_box_design.jpg?​200 |}} 
 + 
 +=== Schema circuitului: ​=== 
 + 
 +{{ :​pm:​prj2023:​fstancu:​circuit_terminat_ca_mine.jpg?​700 |}}
  
-{{:​pm:​prj2023:​fstancu:​hardware_design.jpg?​600|}} 
  
 ===== Software Design ===== ===== Software Design =====
  
 +Dezvoltarea codului am realizat-o in Arduino IDE (care ar putea fi mult mai imbunatatit)
  
-<note tip> +Pe partea de software am folosit bibliotecile
-Descrierea codului aplicaţiei (firmware)+  ​- LiquidCrystal_I2c.h 
-  ​* mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) +  - Servo.h 
-  ​* librării şi surse 3rd-party (e.g. Procyon AVRlib) +  ​- Wire.h
-  ​* algoritmi şi structuri pe care plănuiţi să le implementaţi +
-  * (etapa 3) surse şi funcţii implementate +
-</​note>​+
  
-===== Rezultate Obţinute =====+Pentru generarea categoriilor am creat un array bidimensional numit categories[][],​ in care primul element e marimea sirului de caractere.
  
-<note tip> +Pentru fiecare categorie am creat alte tabele, urmand exemplul celui de mai sus.
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</​note>​+
  
-===== Concluzii =====+Am setat ca pini de input butoanele, iar ca output Servomotorul si LCD-ul.
  
-===== Download =====+Deoarece am avut nevoie de mai multe generari de numere random, am cautat o metoda de a crea aceste numere cu un seed de asemenea random: conectand la pinul analog A0 un fir lasat in aer -> iar valoarea aceasta sa fie folosita pentru randomSeed().
  
-<note warning+Functia randomFunction() ia ca parametru un int de la 1 la 3 (pentru cele 3 cazuri de butoane) si in cadrul switchului returneaza valori pentru toate butoanele. De exemplu: daca vreau sa se invarta servomotorul pentru un timp random (de la 1 la 3 secunde), functia returneaza un numar de la 1 la 5. Daca apas butonul de generare de categorii -se returneaza un numar de la 1 la 5. 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surseschemeetcUn fişier README, ​un ChangeLog, ​un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+ 
 +Aceste rezultate sunt ulterior tratate in loop pentru delay-ul servomotorului si indexul intrebarilor. 
 + 
 +Pentru afisarea intrebarilor a trebuit sa mai fac o functie, [b]chooseQuestion(int category, int questionIndex)[/b], care leaga practic indexul categoriei ​cu categoria de intrebari in sine si printeaza la LCD intrebarea. 
 + 
 +In afara de fuctionarea principalaam adaugat niste tonuri (la felrandom) in loopSunetul porneste la un interval intre 1 si 3 minute: semnal pentru jucatori sa dea un shot :) 
 + 
 +Functiile folosite in cod: 
 +===== Rezultate obtinute ====== 
 +=== Cutia interioara =) === 
 +{{ :​pm:​prj2023:​fstancu:​haosul_interior.jpg?​400 |}} 
 +=== Cutia exterioara 8-o === 
 +{{ :​pm:​prj2023:​fstancu:​haos_exterior1.jpg?400 |}}
  
-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 ​=====+===== Jurnalul proiectului: ​=====
  
 <note tip> <note tip>
-Puteți avea și secțiune ​de jurnal în care să poată urmări asistentul ​de proiect progresul proiectului.+  * 28.04.2023 - Am finalizat ideea de baza a jocului, am creat flow-ul si am ales piesele potrivite pentru circuit 
 +  * 11.05.2023 - Am comandat piesele pentru proiect. 
 +  * 12.05.2023 - Mi-au venit piesele pentru hardware. Am realizat ca am uitat sa cumpar breadboard, adaptor I2C si servomotor, asa ca am mai plasat ​comanda la emag. 
 +  * 19.05.2023 - Am lipit pinii de la LCD la adaptorul I2C si firele tata-tata la butoane. 
 +  * 24-26.05.2023 - !! M-am chinuit sa inteleg ​de ce nu-mi printa nimic LCD-ul, desi backlight-ul pornea, am refacut circuitul, refacut codul, re-descarcat arduino IDE, sters si redescarcat libraria LCDI2C -> CA SA MI SE SUGEREZE CA APARENT TREBUIA DOAR SA REGLEZ CU SURUBELNITA POTENTIOMETRUL DIN SPATELE LCD-ULUI !! 
 +  * 27.05.2023 - Am ajuns la o versiune decenta a codului.
 </​note>​ </​note>​
  
-===== Bibliografie/​Resurse ​=====+===== Concluzii ​=====
  
 +Deși proiectul nu pare să fie foarte complex nici din punct de vedere software și nici hardware, am pus accentul pe design și pe funcționalitate. Am vrut să creez un joc care să fie eventual folosit, îmbunătățit și care să rămână ca amintire :)
 +
 +Probleme am intampinat si la crearea schemei 3d si printarea acesteia (am masurat prea la fix, nu incape cum trebuie inauntru nici placa nici breadboardul,​ nici lcd-ul; iar de printat ar fi trebuit sa printez gaurile acesteia pe laturi, nu pe fata de sus a paralelipipedului,​ fiindca imprimanta nu mi-a facut o baza si practic printa in aer, iar acum inauntru e foarte urat).
 +
 +Am petrecut mult timp pe partea de debugging în cod și am căutat soluții pentru probleme de genul: Arduino nu lucreaza bine pe stringuri, are memorie foarte limitată RAM.
 +
 +===== Download =====
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**.+Codul cutiei magice: {{:​pm:​prj2023:​fstancu:​codginapmzip.zip|}} 
 +PDF: <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
 </​note>​ </​note>​
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​+ 
 + 
 + 
  
pm/prj2023/fstancu/georgina.1683044315.txt.gz · Last modified: 2023/05/02 19:18 by georgina.poting
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