This is an old revision of the document!
Listă de piese:
Am folosit mediul de dezvoltare Arduino IDE. Pentru afișarea pe ecranul LCD, am folosit biblioteca <LiquidCrystal.h>.
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.
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ță.
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:
Coardă | Frecvență (Hz) |
---|---|
E | 82.4 |
A | 110 |
D | 146.8 |
G | 196 |
B | 246.9 |
e | 329.6 |
Diferența în Drop D Tuning constă în valoarea frecvenței corzii E, aceasta fiind de 73.4 Hz.
Pe ecranul LCD, se va afișa litera ce reprezintă coarda acordată (E, A, D, G, B sau e), litera ce reprezintă modul de acordare (S sau D) și un grafic ce va indica diferența față de frecvența de referință.
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.