Autor: Vlaic Andrei-Gabriel
Proiectul consta in implementarea unui simplu pian electric cu 13 clape pentru toate tonurile si semitonurile dintr-o gama muzicala. Pianul mai are ca si functionalitati extra capacitatea de a schimba intre game cu ajutorul unui buton si deasemenea poate reda de pe un card SD o piesa muzicala, iar redarea notelor muzicale de pe pian si de pe cardul SD se va realiza prin intermediul a 2 difuzoare.
Placa de dezvoltare Arduino UNO va prelua date de la butoane prin intermediul bibliotecii tone care va transmite datele corespunaztoare catre difuzor, iar pentru cardul SD vor exista butoane pentru navigarea intre piese si pentru reglarea volumului.
Pentru scrierea codului am folosit ArduinoIDE. Am inclus libraria TMRpcm si am definit frecventele de baze pentru notele octavei Do(C) avand ca frecventa de referinta tonul La(A = 400Hz). Am declarat constantele pentru pinii unde se conecteaza butoanele care produc sunetul aferent notei apasate, un numar intreg pentru valoare octavei (imi pot schimba octava in sus prin dublarea frecventei intr-un anumit interval), si cateva variabile folosite pentru a inregistra doar o apasare a butonului de schimbare a octavei.
In functia setup imi initializez citirea de pe cardul SD folosind libraria tmrpcm. Piesa redata de pe card poate fi schimbata in cod prin schimbarea indicelui de la tmrpcm.play(“songX.wav”) deoarece nu am mai avut un pin liber pentru un buton care sa schimbe indicele piesei redate fara folosirea unui multiplexor. Daca initializarea a avut loc cu succes va incepe redarea unei piese de pe difuzorul de 0.5W/8Ohmi, in rest in setup setez pinii pentru butoane folosind pinMode si digitalWrite.
In cadrul functiei loop realizez un test pentru a vedea daca butonul de schimbare al octavei este apasat constant si ignor pentru un anumit interval de timp input-ul daca nu se schimba pentru a nu schimba de mai multe ori o octava la apasarea unui buton, in rest am 5 nivele pentru valoriile octavei si cateva loop-uri while pentru a utiliza functia tone pentru redarea notelor muzicale de pe difuzorul-brick.
Am reusit sa obtin un pian electric care are si posibilitatea de a reda de pe un cardSD muzica care are ca rol sa serveasca fie ca acompaniament pentru pianist, fie pentru a fi un cover peste piesa. Pianistul dispune de toate tonurile si semitonurile dintr-o octava (13 note muzicale) si daca considera necesar isi poate schimba octava pentru a canta in alt registru mai inalt.
Link prezentare video
In urma acestui proiect am invatat cum sa folosesc un microcontroller Arduino si sa folosesc piesele hardware si deasemenea am invatat cum sa le programez. Inafara de un mini difuzor care nu avea un fir bun nu am avut probleme cu piesele comandate. Singura problema pe parcurs este ca nu am reusit sa complic pe cat de mult voiam proiectul din lipsa de pini liberi dar am reusit sa acopar functionalitatea de baza propusa (pianul cu 13 butoane + octava variabila si playback-ul unei melodii de pe card). La ce am renuntat au fost adjustarea dinamica a volumului si posibilitatea de a schimba melodia fara a fi nevoit sa reincarc codul pe placuta.
Am decis sa renunt la folosirea unui tranzistor sau a unei rezistente de 1k pe care o aveam in serie cu pinul la care este conectat difuzorul de 0.5W/8Ohmi deoarece ii reducea foarte mult din volumul sunetului, iar rezistenta de 1k pusa la mini difuzor poate fi si ea scoasa fara a fi afectata functionalitatea proiectului.
In cadrul acestei arhive se afla codul sursa, schema bloc, schema electrica si o poza cu proiectul realizat.
< 1.05.2021 Comanda piese pentru proiect
1.05.2021 Crearea paginii de wiki. Milestone 1 completat
2.05.2021 Comanda extra pentru un difuzor 0.5W dupa o discutie cu laborantul
13.05.2021 Testare componente comandate
20.05.2021 Finalizare parte software, ramane de finalizat pagina de wiki + documentatia
3.06.2021 Finalizare pagina de wiki + video. Milestone 2 completat
https://www.autodesk.com/products/eagle/free-download Program folosit pentru realizarea schemei electrice
https://www.arduino.cc/en/software Program folosit pentru scrierea codului
https://www.arduino.cc/reference/en/ Documentatie functii din ArduinoIDE
https://www.arduino.cc/reference/en/language/functions/advanced-io/tone/
https://audio.online-convert.com/convert-to-wav Folosit pentru conversia fisierelor mp3 in format wav pentru redarea pieselor
https://domoticx.com/arduino-library-tmrpcm/ Librarie folosita pentru redarea pieselor de pe cardulSD + documentatie