Vreau sa construiesc un device care ma va ajuta sa imi acordez chitara, folosind un Ardunino Uno. El va prelua frecventa notei curente si te va anunta cat de departe sau aproape esti de nota corecta. De asemenea, prin intermediul unui buton se va alege coarda curenta, ce va fi afisata pe ecran. Am pornit de la ideea unui proiect pe care voiam sa il simulez la ADIV, insa nereusindu-mi atunci, sper sa imi reuseasca acum. Acesta va fi util pentru orice pasionat de muzica care vrea sa-si acordeze chitara.
Rosu stanga -> nota este mult mai joasa decat cea corecta. Galben stanga -> nota este mai joasa decat cea corecta, dar apropiata. Verde -> s-a atins nota corecta. Galben dreapta -> nota este mai inalta decat cea corecta, dar apropiata. Rosu dreapta -> nota este mult mai inalta decat cea corecta.
Lista pieselor:
Simulare in Tinkercad:
Schema electrica:
Descrierea asamblarii:
Proitectul asamblat:
Alte poze:
Arhiva codului cu intreruperi. acordor-fara-intreruperi.zip
Arhiva codului fara intreruperi. acordor-intreruperi.zip
Initial, afisez un mesaj de start. La apasarea butonului, cresc o variabila numita “note” pentru a tine evidenta notei la care ma aflu. Pentru fiecare nota in parte, pe langa afisarea mesajului corespunzator pe ecran, citesc inputurile de la microfon de 128 de ori si le salvez intr-un vector. Pe seama acestui vector calculez frecventa sunetului captat folosind niste ecuatii din libraria arduinoFFT.h, iar apoi compar rezultatul cu notele din libraria pitches.h. In functie de cat de aproape sau de departe este frecventa sunetului captat de nota dorita, se vor aprinde ledurile si se va afisa pe ecran un mesaj sugestiv. La final, resetez variabila note pentru a ma intoarce la prima nota.
Momentan, codul nu merge in totalitate, deoarece calculul frecventei folosind transformata Fourier nu da rezultatele asteptate. Trebuie sa gasesc o combinatie intre offseturi, samples si expected frequency pentru fiecare nota. Am obtinut rezultatele cantand notele corespunzatoare de pe telefon.
Trecerea printre notele muzicale (implementare fara intreruperi)
Trecerea printre notele muzicale (implementare cu intreruperi)
Captarea sunetului folosind microfonul si aprinderea ledurilor in functie de sunet.
Nota Mi jos (E2) Nota La (A2) Nota Re (D3) Nota Si (B3) Nota mi sus (e4)
Ma bucur ca am reusit sa pun piesele cap la cap si sa scriu un cod de la zero pentru ideea pe care am avut-o initial. Desi nu merge cum m-am asteptat, stiu ca voi putea gasi o solutie la un moment dat. De asemenea, uneori proiectul se strica si are nevoie de reset.
03.Mai.23 → achizitionarea pieselor initiale si crearea paginii de OCW.
05.Mai.23 → achizitionarea pieselor aditionale si editarea paginii de OCW.
05.Mai.23 → prima incercare de a simula proiectul in Tinkercad. Am folosit un potentiometru pentru simularea semnalului analogic ce va fi dat de microfon. De asemenea, am reusit sa fac partea din cod care se ocupa cu schimbarea notei curente folosind butonul. Am atasat schema electrica aferenta generata de Tinkercad.
22.Mai.23 → asamblarea hardwareului si completarea softwareului.
29.Mai.23 → completarea documentatiei.
30.Mai.23 → adaugarea videoclipurilor.
Pantalla Lcd 16x2 I2C → tutorial in Tinkercad pentru LCD I2C.
Arduino LCD I2C - Tutorial with Arduino Uno → tutorial hardware pentru LCD I2C.
Adresarea memoriei LCD → documentatie pentru a gasi adresa de memorie de la care incepe un LCD 20×4.
Calculator de frecventa → tutorial de utilizare a transformatei Fourier in determinarea frecventei sunetului.