Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2021:apredescu:pian_electric [2021/06/04 00:09]
andreea.pantelimon [Descriere generala]
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======
  
-Pianul este implementat astfel incat sa contina doua module pe care utilizatorul le poate selecta ​in orice moment de timp prin apasarea ​unor butoane. 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.
  
 +**__Schema bloc__**:
 +
 + ​{{:​pm:​prj2021:​apredescu:​schema_bloc_pantelimon.png?​400|}}
 ======Hardware Design====== ======Hardware Design======
  
Line 20: Line 24:
    * Speaker x 1    * Speaker x 1
    * LED-uri x 5    * LED-uri x 5
-   * Banda LED-uri 
    * 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 41: 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 52: 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 62: Line 78:
        * Mi-as fi dorit ca in loc de led-urile ce arata ce clape sunt apasate sa fi reusit sa introduc o mica banda de led-uri, insa nu am reusit si am fost nevoita sa ma rezum la led-uri simlpe.        * Mi-as fi dorit ca in loc de led-urile ce arata ce clape sunt apasate sa fi reusit sa introduc o mica banda de led-uri, insa nu am reusit si am fost nevoita sa ma rezum la led-uri simlpe.
        * Am incercat sa folosesc cati mai putini pini pentru clape, insa am constat ca programul rula mai incet si detectarea degetului se facea cu intarziere. Prin urmare am folosit mai multi pini astfel incat detectarea sa se faca instantaneu si redarea sunetului sa fie rapida.        * Am incercat sa folosesc cati mai putini pini pentru clape, insa am constat ca programul rula mai incet si detectarea degetului se facea cu intarziere. Prin urmare am folosit mai multi pini astfel incat detectarea sa se faca instantaneu si redarea sunetului sa fie rapida.
 +       * Din cauza minei de creion, te murdaresti rapid pe degete LOL.
 ======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]]
 +
 +https://​www.arduinolibraries.info/​libraries/​capacitive-sensor/​
 +
 +https://​www.arduino.cc/​reference/​en/​libraries/​capacitivesensor/​
 +
 +https://​gist.github.com/​mikeputnam/​2820675
pm/prj2021/apredescu/pian_electric.1622754570.txt.gz · Last modified: 2021/06/04 00:09 by andreea.pantelimon
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