This shows you the differences between two versions of the page.
pm:prj2021:alazar:mini_piano [2021/05/28 20:29] maria.diaconu0702 |
pm:prj2021:alazar:mini_piano [2021/05/29 03:26] (current) maria.diaconu0702 |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Mini Piano ===== | ===== Mini Piano ===== | ||
+ | |||
==== Autor==== | ==== Autor==== | ||
Diaconu Maria-Loredana, 335CA | Diaconu Maria-Loredana, 335CA | ||
+ | |||
==== Introducere==== | ==== Introducere==== | ||
Scopul proiecului a fost realizarea unui instrument asemanator unui pian, ce produce note muzicale prin apasarea butoanelor. Cele 8 butoane corespund notelor din gama Do major, practic clapele albe de pe un pian normal. Instrumentul mai dispune de doua butoane, de record si playback, ce asigura functionalitatea de a inregistra o melodie cantata de utilizator si de a o reda. | Scopul proiecului a fost realizarea unui instrument asemanator unui pian, ce produce note muzicale prin apasarea butoanelor. Cele 8 butoane corespund notelor din gama Do major, practic clapele albe de pe un pian normal. Instrumentul mai dispune de doua butoane, de record si playback, ce asigura functionalitatea de a inregistra o melodie cantata de utilizator si de a o reda. | ||
Am ales sa fac acest proiect deoarece sunt pasionata de muzica si voi folosi instrumentul in continuare, pentru a-mi stresa prietenii. | Am ales sa fac acest proiect deoarece sunt pasionata de muzica si voi folosi instrumentul in continuare, pentru a-mi stresa prietenii. | ||
+ | |||
==== Descriere generală==== | ==== Descriere generală==== | ||
=== Schema bloc === | === Schema bloc === | ||
- | {{:pm:prj2021:alazar:schema-proiect.png?200|}} | + | {{:pm:prj2021:alazar:schema_bloc_mini_piano.jpg?650|}} |
=== Functionare === | === Functionare === | ||
Utilizatorul ofera input instrumentului prin apasarea butoanelor corespunzatoare notelor. Buzzerul va reda, apoi, sunetul la frecventa potrivita. | Utilizatorul ofera input instrumentului prin apasarea butoanelor corespunzatoare notelor. Buzzerul va reda, apoi, sunetul la frecventa potrivita. | ||
In momentul in care utilizatorul apasa pe butonul de record, se aprinde ledul rosu, ce semnaleaza ca a inceput inregistrarea. Utilizatorul poate opri inregistrarea, apasand din nou pe acelasi buton. In acest moment, fragmentul muzical este salvat si poate fi redat o singura data folosind butonul de playback. Cat timp se reda melodia, se aprinde ledul verde. | In momentul in care utilizatorul apasa pe butonul de record, se aprinde ledul rosu, ce semnaleaza ca a inceput inregistrarea. Utilizatorul poate opri inregistrarea, apasand din nou pe acelasi buton. In acest moment, fragmentul muzical este salvat si poate fi redat o singura data folosind butonul de playback. Cat timp se reda melodia, se aprinde ledul verde. | ||
+ | |||
==== Hardware Design==== | ==== Hardware Design==== | ||
=== Componente === | === Componente === | ||
Line 24: | Line 28: | ||
=== Schema electrica === | === Schema electrica === | ||
+ | {{:pm:prj2021:alazar:eagle_sch.jpg?700|}} | ||
+ | |||
==== Software Design==== | ==== Software Design==== | ||
+ | Programul a fost dezvoltat pe Windows, utilizand Arduino IDE, deoarece dispune de toate bibliotecile necesare si face foarte simplu procesul de a incarca cod pe placuta. | ||
+ | |||
+ | Am definit doua structuri: | ||
+ | * **Button** pentru a descrie un buton, ce retine starea actuala, starea anteriara si momentul de timp cand a fost actionat. | ||
+ | * **Note** pentru notele muzicale inregistrate, ce retine nota (de fapt, pinul la care este conectat butonul corespunzator) si durata acesteia. | ||
+ | Secventa muzicala inregistrata este retinuta intr-un array de elemente de tip Note numit song. Pauzele in melodie sunt reprezentate prin note "silentioase", cu identificatorul 0. | ||
+ | |||
+ | Sunt verificate starile butoanelor de record si playback si sunt aprinse sau stinse ledurile in functie de acestea. Pentru a verifica daca sunt apasate sau nu, am folosit mecanismul de debounce, cu un delay de 50 ms. Se verifica starile clapelor si, daca butonul de record este apasat, notele sunt adaugate in array-ul song, impreuna cu durata lor. Daca este apsat butonul de playback, se itereaza prin array si se reda fiecare nota, dimensiunea array-ului fiind resetata. | ||
+ | |||
==== Rezultate obtinute==== | ==== Rezultate obtinute==== | ||
+ | Am reusit sa realizez ce mi-am propus cu acest proiect si am pierdut mult prea mult timp distrandu-ma cu el. Din pacate, nu are o carcasa, iar firele iti cam stau in cale, dar este o jucarie functionala. \\ | ||
+ | \\ | ||
+ | {{:pm:prj2021:alazar:piano_2.jpg?350}} {{:pm:prj2021:alazar:piano_1.jpg?350}} | ||
+ | \\ | ||
+ | {{ :pm:prj2021:alazar:piano_n.jpg?500 |}} | ||
+ | === Demo === | ||
+ | [[https://www.youtube.com/watch?v=U1hxpjBaeks|Demo Proiect PM]] | ||
+ | |||
==== Concluzii==== | ==== Concluzii==== | ||
+ | Desi facusem schema inainte in Tinkercad, unde am lucrat tot semestrul, a durat putin mai mult decat ma asteptam deoarece in viata reala apar situatii neprevazute (jumatatea stanga a breadboardului meu este deconectata de jumatatea dreapta, mi-am dat seama tarziu m(). Desi mi s-a parut inca o chestie in plus la inceput, pana la urma ma bucur ca am avut sansa sa construiesc ceva fizic si m-am ales cu o jucarie draguta. | ||
+ | |||
==== Download==== | ==== Download==== | ||
- | ==== Jurnal==== | + | {{:pm:prj2021:alazar:cod_sursa.zip|}} \\ |
- | ==== Bibliografie/Resurse==== | + | {{:pm:prj2021:alazar:schema_electrica.zip|}} |
- | {{:pm:prj2021:alazar:mini_piano.pdf|}} | + | |
+ | ==== Bibliografie==== | ||
+ | === Resurse === | ||
+ | [[https://ocw.cs.pub.ro/courses/pm|PM Wiki]] \\ | ||
+ | [[https://www.arduino.cc/en/Tutorial/BuiltInExamples/Debounce|Debounce]] \\ | ||
+ | === Documentatia === | ||
+ | {{:pm:prj2021:alazar:mini_piano_.pdf|}} |