Differences

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

Link to this comparison view

pm:prj2023:fstancu:georgina [2023/05/28 22:30]
georgina.poting [Hardware Design]
pm:prj2023:fstancu:georgina [2023/05/29 23:40] (current)
georgina.poting [Software Design]
Line 47: Line 47:
   * Servomotor   * Servomotor
  
-Design-ul cutiei 3d:+=== Design-ul cutiei 3d: ===
  
 {{ :​pm:​prj2023:​fstancu:​hardware_box_design.jpg?​200 |}} {{ :​pm:​prj2023:​fstancu:​hardware_box_design.jpg?​200 |}}
  
-Schema circuitului:​+=== Schema circuitului: ​=== 
 + 
 +{{ :​pm:​prj2023:​fstancu:​circuit_terminat_ca_mine.jpg?​700 |}}
  
-{{ :​pm:​prj2023:​fstancu:​circuit_terminat_ca_mine.jpg?​400 |}} 
  
 ===== 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:​ 
-TBD +  - LiquidCrystal_I2c.h 
-</​note>​+  - Servo.h 
 +  - Wire.h
  
-===== Rezultate ​Obţinute ​=====+Pentru generarea categoriilor am creat un array bidimensional numit categories[][],​ in care primul element e marimea sirului de caractere. 
 + 
 +Pentru fiecare categorie am creat alte tabele, urmand exemplul celui de mai sus. 
 + 
 +Am setat ca pini de input butoanele, iar ca output Servomotorul si LCD-ul. 
 + 
 +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(). 
 + 
 +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. 
 + 
 +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 principala, am adaugat niste tonuri (la fel, random) in loop. Sunetul 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 |}} 
 + 
 + 
 +===== Jurnalul proiectului: ​=====
  
 <note tip> <note tip>
-TBD+  * 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 o 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>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+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 :)
  
-<​note ​warning+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). 
-TBA+ 
 +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>​ 
 +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.1685302219.txt.gz · Last modified: 2023/05/28 22:30 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