This shows you the differences between two versions of the page.
pm:prj2021:amocanu:pian_electric [2021/05/23 19:30] emilian.manescu [Bibliografie/Resurse] |
pm:prj2021:amocanu:pian_electric [2021/06/02 21:26] (current) emilian.manescu [Bibliografie/Resurse] |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Pian Electric ====== | ====== Pian Electric ====== | ||
- | **Autor**: Mănescu Emilian-Claudiu | + | **Autor**: [[emilian.manescu@stud.acs.upb.ro|Emilian Mănescu]] |
===== Introducere ===== | ===== Introducere ===== | ||
Proiectul presupune crearea unui pian electric capabil sa redea notele din gama Do Major. | Proiectul presupune crearea unui pian electric capabil sa redea notele din gama Do Major. | ||
Line 17: | Line 17: | ||
- | **Schema bloc:** | + | ==Schema bloc:== |
Line 33: | Line 33: | ||
* Fire | * Fire | ||
- | {{:pm:prj2021:amocanu:schemaelectrica.png?800|}} | + | {{:pm:prj2021:amocanu:schemaelectrica.png?700|}} |
===== Software design ===== | ===== Software design ===== | ||
+ | Proiectul a fost realizat in Arduino IDE. Pentru comunicarea cu ecranul LCD, am folosit bibliotecile Wire si LiquidCrystal_I2C. | ||
+ | ==== Descriere implementare ==== | ||
+ | * functia **RGB_color** coloreza LED-ul RGB intr-o anumita culoare specificata (rosu sau verde) | ||
+ | * functia **setup** initializeaza pinii, ecranul LCD si LED-ul. | ||
+ | * functia **playNote** alege nota ce va fi redata de catre buzzer. | ||
+ | * functia **loop** cuprinde logica generala a programului, in care se poate schimba cantecul afisat pe ecran, se poate alege redarea unei melodii sau invatarea acesteia. | ||
+ | * functia **playCurrentSong** apeleaza functia de redare (**playSong**) pentru melodia afisata pe ecran. | ||
+ | * functia **getNoteString** returneaza un string reprezentand nota ce va fi afisata pe ecran in modul de invatare. | ||
+ | * functia **notCorrect** verifica daca nota apasata de utilizator si cea afisata pe ecran coincid. | ||
+ | * functia **learnCurrentSong** incepe procesul de invatare a melodiei afisate pe ecran. | ||
+ | * functia **learnSong** verifica daca toate notele unei melodii au fost cantate corect de utilizator. | ||
+ | * fisierul **pitches.h** cuprinde frecventele tuturor notelor. | ||
+ | * fisierul **songs.h** cuprinde informatii despre cele trei melodii disponibile (notele, durata notelor, numarul de note si tempo-ul de redare). | ||
===== Rezultate obtinute ===== | ===== Rezultate obtinute ===== | ||
+ | [[https://www.youtube.com/watch?v=QZS38Q4ibWA|Demo]] | ||
===== Concluzii ===== | ===== Concluzii ===== | ||
+ | Mi-a placut sa lucrez la acest proiect, in special pentru ca am reusit sa imbin doua dintre domeniile care ma pasioneaza cel mai mult (tehnologia si muzica). Partea de hardware (desi nu foarte complicata) mi s-a parut mai greu de realizat, deoarece nu am mai lucrat niciodata la un proiect practic. Cel mai greu a fost sa realizez conectarea butoanelor pentru clape la un singur pin analogic (prin divizoare de tensiune). Totodata, imi doresc sa imbunatatesc acest proiect pe viitor si sa adaug functionalitati extra. | ||
===== Download ===== | ===== Download ===== | ||
+ | {{:pm:prj2021:amocanu:proiectpm_pianelectric_manescuemilian_333cb.zip|Arhiva Proiect}} | ||
===== Bibliografie/Resurse ===== | ===== Bibliografie/Resurse ===== | ||
Line 48: | Line 62: | ||
* https://howtomechatronics.com/tutorials/arduino/how-to-use-a-rgb-led-with-arduino/ | * https://howtomechatronics.com/tutorials/arduino/how-to-use-a-rgb-led-with-arduino/ | ||
* https://create.arduino.cc/projecthub/rahulkhanna/arduino-tutorial-mini-piano-08f8b8 | * https://create.arduino.cc/projecthub/rahulkhanna/arduino-tutorial-mini-piano-08f8b8 | ||
+ | |||
+ | {{:pm:prj2021:amocanu:pian_electric.pdf|}} |