Differences

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

Link to this comparison view

pm:prj2022:amocanu:anastasia.smarandi [2022/06/02 06:14]
anastasia.smarandi [Software Design]
pm:prj2022:amocanu:anastasia.smarandi [2022/06/02 06:20] (current)
anastasia.smarandi [Bibliografie/Resurse]
Line 41: Line 41:
 Pentru a calcula frecvența corzilor chitării, am folosit o întrerupere ADC: de fiecare dată când portul A0 al plăcuței Arduino primește o nouă valoare analog, se produce o întrerupere după algoritmul descris aici: https://​www.instructables.com/​Arduino-Frequency-Detection/​. Pentru a calcula frecvența corzilor chitării, am folosit o întrerupere ADC: de fiecare dată când portul A0 al plăcuței Arduino primește o nouă valoare analog, se produce o întrerupere după algoritmul descris aici: https://​www.instructables.com/​Arduino-Frequency-Detection/​.
  
-Astfel, în rutina de întrerupere ADC, am ales o tensiune în limitele semnalului meu (2.5 V). Am contorizat evenimentele de prag în care  unda a traversat acest nivel cu o pantă ascendentă. Dacă acest lucru s-a întâmplat de mai multe ori într-un ciclu, am ales ca evenimentul de prag cu cea mai mare pantă să fie începutul ciclului. Am folosit o variabilă numită „time” (incrementată la o rată de 38,5 kHz) pentru a măsura timpul dintre evenimentele de prag și am stocat valorile acesteia într-un array numit timer[]. De asemenea, am înregistrat panta la fiecare dintre evenimentele de prag într-un array numit slope[]. Apoi am comparat elementele timer[] și slope[] pentru a afla unde a fost o potrivire. Odată ce a fost găsită o potrivire, am adunat elementele timer[] pentru a determina durata ciclului și am trimis ​această valoare ​la o variabilă globală numită „period”. În funcția principală loop() folosesc valoarea perioadei pentru a calcula frecvența.+Astfel, în rutina de întrerupere ADC, am ales o tensiune în limitele semnalului meu (2.5 V). Am contorizat evenimentele de prag în care  unda a traversat acest nivel cu o pantă ascendentă. Dacă acest lucru s-a întâmplat de mai multe ori într-un ciclu, am ales ca evenimentul de prag cu cea mai mare pantă să fie începutul ciclului. Am folosit o variabilă numită „time” (incrementată la o rată de 38,5 kHz) pentru a măsura timpul dintre evenimentele de prag și am stocat valorile acesteia într-un array numit timer[]. De asemenea, am înregistrat panta la fiecare dintre evenimentele de prag într-un array numit slope[]. Apoi am comparat elementele timer[] și slope[] pentru a afla unde a fost o potrivire. Odată ce a fost găsită o potrivire, am adunat elementele timer[] pentru a determina durata ciclului și am stocat ​această valoare ​într-o variabilă globală numită „period”. În funcția principală loop() folosesc valoarea perioadei pentru a calcula frecvența.
  
-Această valoare ​este comparată apoi cu valorile de referință ale corzilor (în funcție de modul de acordare) pentru a determina ce coardă a fost atinsă și care este diferența de frecvență. ​+Frecvența obținută este comparată apoi cu valorile de referință ale corzilor (în funcție de modul de acordare) pentru a determina ce coardă a fost atinsă și care este diferența de frecvență. ​
  
 Printr-o altă întrerupere declanșată de apăsarea unui buton, stabilesc modul de acordare: Standard sau Drop D. Valorile frecvențelor pentru Standard Tuning sunt:  Printr-o altă întrerupere declanșată de apăsarea unui buton, stabilesc modul de acordare: Standard sau Drop D. Valorile frecvențelor pentru Standard Tuning sunt: 
Line 86: Line 86:
   * https://​stanford.edu/​~mmhou/​Guitar_tuner_instructable.pdf   * https://​stanford.edu/​~mmhou/​Guitar_tuner_instructable.pdf
   * https://​www.ti.com/​lit/​ds/​symlink/​tl082-n.pdf?​ts=1653306138055&​ref_url=https%253A%252F%252Fwww.google.com%252F   * https://​www.ti.com/​lit/​ds/​symlink/​tl082-n.pdf?​ts=1653306138055&​ref_url=https%253A%252F%252Fwww.google.com%252F
 +  * https://​docs.arduino.cc/​learn/​electronics/​lcd-displays
 +  * https://​riptutorial.com/​arduino/​example/​9856/​interrupt-on-button-press
 +  * https://​www.renesas.com/​us/​en/​support/​engineer-school/​mcu-programming-peripherals-04-interrupts
  
 <​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/amocanu/anastasia.smarandi.1654139679.txt.gz · Last modified: 2022/06/02 06:14 by anastasia.smarandi
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