Differences

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

Link to this comparison view

pm:prj2021:avaduva:air-drums [2021/05/27 19:27]
diana_ioana.tascan
pm:prj2021:avaduva:air-drums [2021/05/27 20:09] (current)
diana_ioana.tascan
Line 36: Line 36:
 ===== Software Design ===== ===== Software Design =====
   * Tot codul pentru placa Arduino se află în fișierul airdrums.ino,​ iar encodarea sunetelor se află în fișierul sounds.h.   * Tot codul pentru placa Arduino se află în fișierul airdrums.ino,​ iar encodarea sunetelor se află în fișierul sounds.h.
-  * Pentru a știi pe ce adrese sunt accelerometrii,​ am folosit un program I2C scanner. După ce am găsit adresele, le-am salvat în 2 variabile globale. Pentru a detecta dacă un băț a fost mișcat, folosesc variabile globale pentru coordonatele lor în spațiu. O variabilă bool este folosită pentru a spune dacă bățul a fost mișcat destul de repede pentru a mima lovitura tobei. ​+  ​* Pentru redarea sunetelor, am folosit biblioteca PCM.h. 
 +  ​* Pentru a știi pe ce adrese sunt accelerometrii,​ am folosit un program I2C scanner. După ce am găsit adresele, le-am salvat în 2 variabile globale. Pentru a detecta dacă un băț a fost mișcat, folosesc variabile globale pentru coordonatele lor în spațiu. O variabilă bool este folosită pentru a spune dacă bățul a fost mișcat destul de repede pentru a mima lovitura tobei
 +  * Pentru a obține coordonatele bățului, se citește de la accelerometrii în funcția getCoords. Pentru că se citesc doar câte 8 biți, dar valorile necesare sunt pe 16 biți, se face o shiftare a primilor 8 biți și se adaugă următorii 8. În funcție de care accelerometru este mișcat, se reactualizează coordonatele respective lui. 
 +  * Pentru a vedea dacă trebuie să se redea un sunet, în funcția checkToPlay se calculează distanța dintre coordonatele anterioare și noile coordonate, în funcție de care accelerometru a detectat mișcarea. Dacă mișcarea este detectată, se alege la întâmplare unul din două sunete encodate pentru acel accelerometru. 
 +  * În funcția setup(), se pornesc accelerometrele,​ iar pentru a schimba senzitivitatea lor, la 0x31 se scrie 3, care face senzitivitatea mai mică. Se apelează getCoords pentru a lua coordonatele inițiate. 
 +  * În funcția loop() doar se verifică dacă trebuie să se redea un sunet pe difuzor. 
 +  * Pentru encodarea sunetelor, am găsit un pachet de sunete online care avea câteva sunete de tobe. Am luat pachetul și am folosit Audacity pentru a converti la un sunet PCM, apoi am folosit un program EncodeAudio pentru a obține un vector ce reprezintă encodarea frecvenței sunetului. Fiecare băț are doar câte două sunete, deoarece ocupă mult spațiu și nu am putut adăuga astfel alte sunete. 
 + 
 +===== Rezultate Obținute ===== 
 +==== Modul fără bețe ==== 
 +{{drums_without_sticks.jpeg?​500|}} 
 +==== Modul cu bețe ==== 
 +{{drums_with_sticks.jpeg?​500|}} 
 +==== Video ==== 
 +[[https://​youtu.be/​MfVGtItqarQ | Short Demo Video]] 
 + 
 +===== Concluzii ===== 
 +  * A fost destul de dificil să găsesc o metodă de encodare a sunetelor și dificil să aleg sunete care să fie scurte și reprezentative pentru tobe. 
 +  * A dat rateuri de câteva ori fără vreo explicație,​ a trebuit să închid și să redeschid aplicația ca să meargă... 
 +  * Un proiect plăcut, dar sunt dezamăgită că nu am putut adăuga mai multe sunete din cauza memoriei.
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
Line 46: Line 65:
 [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​air-drums?​do=export_pdf | Document PDF]] [[https://​ocw.cs.pub.ro/​courses/​pm/​prj2021/​avaduva/​air-drums?​do=export_pdf | Document PDF]]
  
 +<note important>​{{:​pm:​prj2021:​avaduva:​tascan_diana_332cb_airdrums.zip|Codul și folder cu sunetele reproduse}}</​note>​
pm/prj2021/avaduva/air-drums.1622132821.txt.gz · Last modified: 2021/05/27 19:27 by diana_ioana.tascan
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