This shows you the differences between two versions of the page.
pm:prj2021:apredescu:pian_electric [2021/06/04 00:43] andreea.pantelimon [Hardware Design] |
pm:prj2021:apredescu:pian_electric [2021/06/04 11:15] (current) andreea.pantelimon [Software Design] |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Introducere ===== | ===== Introducere ===== | ||
- | Proiectul are ca si scop implementarea unui pian care sa aibe doua module implementate. Modulul "freestyle" si modulul "profesor". Acest pian poate fi folositor pentru utilizatorii care doresc sa invete melodii usoare sau care doresc sa aibe o mica jucarie cu care sa se distreze. | + | Proiectul are ca si scop implementarea unui pian care sa aibe doua module. Modulul "freestyle" si modulul "profesor". Acest pian poate fi folositor pentru utilizatorii care doresc sa invete melodii usoare sau care doresc sa aibe o mica jucarie cu care sa se distreze. |
======Descriere generala====== | ======Descriere generala====== | ||
Line 11: | Line 11: | ||
Pianul este implementat astfel incat sa contina doua module pe care utilizatorul le poate selecta prin apasarea unui buton. Primul mod, cel de "freestyle", permite utilizatorului sa cante ceea ce doreste, iar prin apasarea fiecarei dintre clape, un led se va aprinde astfel incat sa semnaleze clapa care a fost apasata. Cel de-al doilea mod, "profesor", va aprinde mai intai un led care sa semnaleze utilizatorului clapa care trebuie apasata. Daca utilizatorul va apasa pe clapa gresita, atunci clapa nu va fi luata in considerare si se va astepta pana cand clapa potrivita a fost apasata. | Pianul este implementat astfel incat sa contina doua module pe care utilizatorul le poate selecta prin apasarea unui buton. Primul mod, cel de "freestyle", permite utilizatorului sa cante ceea ce doreste, iar prin apasarea fiecarei dintre clape, un led se va aprinde astfel incat sa semnaleze clapa care a fost apasata. Cel de-al doilea mod, "profesor", va aprinde mai intai un led care sa semnaleze utilizatorului clapa care trebuie apasata. Daca utilizatorul va apasa pe clapa gresita, atunci clapa nu va fi luata in considerare si se va astepta pana cand clapa potrivita a fost apasata. | ||
Clapele vor fi realizate din hartie. | Clapele vor fi realizate din hartie. | ||
+ | |||
+ | **__Schema bloc__**: | ||
+ | |||
+ | {{:pm:prj2021:apredescu:schema_bloc_pantelimon.png?400|}} | ||
======Hardware Design====== | ======Hardware Design====== | ||
Line 22: | Line 26: | ||
* Breadboard x 1 | * Breadboard x 1 | ||
* Fire tata-tata x 24 | * Fire tata-tata x 24 | ||
+ | |||
+ | **__Schema electrica__**: | ||
+ | |||
+ | {{:pm:prj2021:apredescu:schema_elec_pantelimon.png?600|}} | ||
======Software Design====== | ======Software Design====== | ||
Pentru implementare am folosit Arduino IDE ca si mediu de dezvoltare. Bibliotecile externe pe care le-am folosit sunt urmatorele: | Pentru implementare am folosit Arduino IDE ca si mediu de dezvoltare. Bibliotecile externe pe care le-am folosit sunt urmatorele: | ||
- | * pitches.h (ce contine notele cu frecventele corespunzatore) | + | * pitches.h (ce contine notele cu frecventele corespunzatoare) |
* [[https://www.arduinolibraries.info/libraries/capacitive-sensor|CapacitiveSensor.h]] pentru depistarea capacitatii electrice din corpul uman. | * [[https://www.arduinolibraries.info/libraries/capacitive-sensor|CapacitiveSensor.h]] pentru depistarea capacitatii electrice din corpul uman. | ||
Line 40: | Line 48: | ||
* keyWait(CapacitiveSensor bpin) - este o functie folosita in modul "profesor". Aceasta opreste melodia si asteapta pana cand utilizatorul va apasa clapa potrivita. Odata ce clapa a fost apasata, se va iesi din functie si melodia va continua; | * keyWait(CapacitiveSensor bpin) - este o functie folosita in modul "profesor". Aceasta opreste melodia si asteapta pana cand utilizatorul va apasa clapa potrivita. Odata ce clapa a fost apasata, se va iesi din functie si melodia va continua; | ||
* Song1(), Song2(), Song3() - aceste functii au ca si rol derularea melodiilor pentru modul "profesor" (sunt trei melodii implementate, fiecarei functii atribuindui-se una). In aceaste functii, se va aprinde ledul ce indica clapa ce trebuie apasata, se va apela keyWait si o data iesita din aceasta functie, sunetul va fi produs iar ledul va fi inchis, trecandu-se la urmatoarea nota. Am grija sa am un delay astfel incat trecerea de la o nota la alta sa nu fie prea rapida; | * Song1(), Song2(), Song3() - aceste functii au ca si rol derularea melodiilor pentru modul "profesor" (sunt trei melodii implementate, fiecarei functii atribuindui-se una). In aceaste functii, se va aprinde ledul ce indica clapa ce trebuie apasata, se va apela keyWait si o data iesita din aceasta functie, sunetul va fi produs iar ledul va fi inchis, trecandu-se la urmatoarea nota. Am grija sa am un delay astfel incat trecerea de la o nota la alta sa nu fie prea rapida; | ||
- | * setup() - initializez pinii pentru clape si butonul pentru profesor; | + | * setup() - initializez pinii pentru led-uri si butonul pentru profesor; |
* loop() - la inceput setez senzitivitatea pentru fiecare clapa in parte. Dupa care verific daca una din clape a fost atinsa. Daca da, atunci se va aprinde ledul ce va indica clapa atinsa, iar in caz contrar ma asigur ca nu este scos niciun sunet si ca ledurile sunt inchise. Dupa care verific daca butonul de profesor a fost apasat. Cu ajutorul counter-ului, voi verifica de cate ori a fost apasat acest buton. Daca a fost apasat de 0 ori, atunci se va apela Song1() si count-ul creste. Daca a fost apasat o data, atunci se va apela Song2() si count-ul creste. Daca a fost apasat de 2 ori, atunci se va apela Song3() si count-ul va creste. Daca a fost apsat de 3 ori, count-ul se va reseta la 0. | * loop() - la inceput setez senzitivitatea pentru fiecare clapa in parte. Dupa care verific daca una din clape a fost atinsa. Daca da, atunci se va aprinde ledul ce va indica clapa atinsa, iar in caz contrar ma asigur ca nu este scos niciun sunet si ca ledurile sunt inchise. Dupa care verific daca butonul de profesor a fost apasat. Cu ajutorul counter-ului, voi verifica de cate ori a fost apasat acest buton. Daca a fost apasat de 0 ori, atunci se va apela Song1() si count-ul creste. Daca a fost apasat o data, atunci se va apela Song2() si count-ul creste. Daca a fost apasat de 2 ori, atunci se va apela Song3() si count-ul va creste. Daca a fost apsat de 3 ori, count-ul se va reseta la 0. | ||
Line 51: | Line 59: | ||
* buttonsx: sunt salvate variabile de tip CapacitiveSensor ce reprezinta ce clape vor trebui apasate; | * buttonsx: sunt salvate variabile de tip CapacitiveSensor ce reprezinta ce clape vor trebui apasate; | ||
======Rezultate obtinute====== | ======Rezultate obtinute====== | ||
+ | Am obtinut un pian electric, a caror clape sunt facute din hartie si prin atingerea acestora sunetul este produs si care are doua module implementate. Una de "freestyle" in care utilizatorul poate sa cante cum doreste si una de "profesor" in care utilizatorul poate invata mai multe melodii. | ||
- | Overview al proiectului: | + | Overview al proiectului: |
+ | |||
+ | {{:pm:prj2021:apredescu:pantelimon1.jpeg?200|}} {{:pm:prj2021:apredescu:pantelimon3.jpeg?200|}} | ||
+ | |||
+ | {{:pm:prj2021:apredescu:pantelimon4.jpeg?200|}} | ||
+ | |||
+ | Mai jos puteti gasi un mic demo al proiectului: | ||
+ | |||
+ | [[https://www.youtube.com/watch?v=ujA1CVNmL_M|DEMO]] | ||
======Concluzii====== | ======Concluzii====== | ||
Line 64: | Line 81: | ||
======Donwload====== | ======Donwload====== | ||
+ | Atasez mai jos arhiva cu codul sursa. | ||
+ | |||
+ | {{:pm:prj2021:apredescu:pantelimon_andreea_331cc.zip|Arhiva}} | ||
+ | |||
+ | ======Jurnal====== | ||
+ | |||
+ | 01.05.2021 - Crearea paginii de wiki. | ||
+ | |||
+ | 03.05.2021 - Comandarea componentelor. | ||
+ | |||
+ | 17.05.2021 - Testarea componentelor. | ||
+ | |||
+ | 02.06.2021 - Finalizarea testarii partii hardware si software. | ||
+ | |||
+ | 03.05.2021 - Finalizarea paginii de wiki. | ||
======Bibliografie / Resurse====== | ======Bibliografie / Resurse====== | ||
[[https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/pian_electric?do=export_pdf|Export PDF]] | [[https://ocw.cs.pub.ro/courses/pm/prj2021/apredescu/pian_electric?do=export_pdf|Export PDF]] |