Acordor de chitara - Gheorghisor Ileana - 333CA

Introducere

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.

Descriere generala

Proiectul va functiona astfel:

  1. Se va alege prin intermediul butonului coarda curenta (E, A, D, G, B sau e). Aceasta va fi afisata pe ecran. Se poate poate cicla prin ele, asa ca daca se trece de coarda dorita, se va mai apasa de cateva ori pentru a ajunge inapoi la ea.
  2. Se va ciupi coarda respectiva langa microfon, care va capta si va transmite frecventa ei in format analog Arduinoului.
  3. Programul va compara frecventa notei ciupite cu frecventa notei selectate, avand o baza de date cu mai multe frecvente corespunzatoare diferitelor note.
  4. In functie de cat de aproape este de cea corecta, se vor aprinde LED-urile astfel:
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.

Schema bloc a modulelor:

Hardware design

Lista pieselor:

  • 1 Arduino Uno
  • 1 Breadboard
  • 1 Ecran LCD 2004 verde
  • 1 Modul I2C
  • 1 Modul microfon sensitibilitate inalta
  • Fire de legatura
  • 5 Leduri (2 rosii, 2 galbene, 1 verde)
  • 1 Buton

Simulare in Tinkercad:

Schema electrica:

Descrierea asamblarii:

  • Led rosu la pin 3
  • Led galben la pin 4
  • Led verde la pin 5
  • Led galben la pin 6
  • Led rosu la pin 7
  • Buton la pin 8 (fara intreruperi) si la pin 2 (cu intreruperi)
  • Microfon la pin A5
  • Ecran cu modulul I2C la SDA si SCL
  • Tot la 5V si GND

Proitectul asamblat:

Alte poze:

Software design

Mediu de dezvoltare

Laboratoare folosite

  1. Laboratorul 0: GPIO → pentru buton si LED-uri.
  2. Laboratorul 4: ADC → pentru citirea frecventei transmise de microfon.
  3. Laboratorul 6: I2C → pentru afisarea datelor pe ecran.

Biblioteci folosite

  1. pitches.h → contine frecventele notelor muzicale.
  2. LiquidCrystal_I2C.h → pentru utilizarea ecranului LCD si a modulului I2C.
  3. Wire.h → pentru modulul I2C.
  4. arduinoFFT.h → pentru calcularea frecventei sunetului.
  5. Alte eventuale biblioteci folosite la laborator.

Arhive

Arhiva codului cu intreruperi. acordor-fara-intreruperi.zip

Arhiva codului fara intreruperi. acordor-intreruperi.zip

Explicarea codului

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.

Rezultate obtinute

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.

Linkuri cu diferite functionalitati

Concluzii

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.

Jurnal

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.

Bibliografie/Resurse

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.

Export to PDF

pm/prj2023/adarmaz/acordor-de-chitara.txt · Last modified: 2023/05/30 14:53 by ileana.gheorghisor
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