This is an old revision of the document!
Modulele de Amplificator și de DC Offset au rolul de a aduce semnalul primit de la chitară între 0 și 5V și a-l centra în 2.5V pentru a putea fi citit de pinul A0 al plăcuței Arduino.
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ță.
Tuner-ul are o acuratețe foarte ridicată, însă datorită zgomotului și a metodei alese pentru a-l evita (atingerea unei amplitudini minime pentru ca semnalul să fie procesat), corzile mai subțiri trebuie lovite mai tare pentru a fi interceptate.
Am învățat foarte multe lucrând la acest proiect. Nu mă așteptam ca detectarea frecvenței de intrare să fie o provocare așa de mare, dar acum simt că stăpânesc teoria din spate. Am plecat cu o altă idee inițial, aceea de a acorda chitara automat prin intermediul unui stepper sau servo motor care să acționeze cheițele. Din păcate, nu am anticipat la timp nevoia unor piese pentru motor, așa că am reconfigurat proiectul și am ales să adaug un ecran LCD pentru afișare și un al doilea mod de acordare. În final, sunt mulțumită de rezultat și de timpul petrecut lucrând la proiect. Mi-aș dori să îl îmbunătățesc, să lipesc toate componentele care sunt momentan pe breadboard și chiar să îl folosesc când îmi acordez chitara.
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.