Differences

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

Link to this comparison view

pm:prj2022:agmocanu:laserpiano [2022/05/09 08:12]
apostolache2211
pm:prj2022:agmocanu:laserpiano [2022/06/02 18:30] (current)
apostolache2211
Line 16: Line 16:
 Tonul si frecventa sunetelor se vor calcula pe baza informatiei primite de la fotorezistente. Tonul si frecventa sunetelor se vor calcula pe baza informatiei primite de la fotorezistente.
  
-Pianul va avea si un buton folosit la oprirea si stingerea laserelor. Starile pianului de on/off vor fi vizibile utilizatorului prin culoarea redata de un led. Rosu inseamna ca obiectul este nefolosibil si verde inseamna ca este gata de utilizat.+Pianul va avea si un buton folosit la oprirea si stingerea laserelor. Starile pianului de on/off vor fi vizibile utilizatorului prin culoarea redata de un led rgb. Rosu inseamna ca obiectul este nefolosibil si verde inseamna ca este gata de utilizat. Mai mult, pianul va avea si o proprietate ca dupa un anumit timp in care este in starea on si nu s-a cantat nicio nota muzicala sa se inchida singur.
  
  
 Schema bloc: Schema bloc:
 +
  
 {{:​pm:​prj2022:​agmocanu:​schema_bloc_postolache_331cb.jpg?​nolink|}} {{:​pm:​prj2022:​agmocanu:​schema_bloc_postolache_331cb.jpg?​nolink|}}
 +
  
 Utilizatorul interactioneaza doar cu laserele, ce reprezinta "​clapele"​ pianului si cu butonul de pornit/​oprit. Laserele interactioneaza cu fotorezistentele ce trimit informatia la Arduino. Placa Arduino trimite comenzi la led, lasere si difuzor. Utilizatorul interactioneaza doar cu laserele, ce reprezinta "​clapele"​ pianului si cu butonul de pornit/​oprit. Laserele interactioneaza cu fotorezistentele ce trimit informatia la Arduino. Placa Arduino trimite comenzi la led, lasere si difuzor.
Line 28: Line 30:
 Piesele folosite sunt: Piesele folosite sunt:
   * placuta Arduino Uno R3   * placuta Arduino Uno R3
-  * diode laser rosii +  * diode laser rosii 
-  * fotorezistente +  * fotorezistente 
-  * rezistente+  * rezistente ​de 1K si 10K ohm 
   * cablu de alimentare   * cablu de alimentare
   * 1 difuzor   * 1 difuzor
-  * 1 led+  * 1 led rgb
   * 1 buton   * 1 buton
-  * fire mama-tatatata-tata ​si mama-mama +  * fire mama-tata ​si tata-tata 
-  * breadboard+  * breadboard-uri
   * cadru din polistiren   * cadru din polistiren
  
 +Schema Electrica:
 +
 +{{:​pm:​prj2022:​agmocanu:​schema_electrica_post.jpg?​direct&​300|}}
  
 ===== Software Design ===== ===== Software Design =====
 +
 +Mediul de dezvoltare folosit este ARDUINO IDE.
 +
 +Informatii Implementare Software:
 +
 +  * In lucrul cu butonul, programul sesizeaza cand acesta este apasat prin citirea semnalului HIGH de la pinul digital corespunzator. La apasarea butonului pianul isi schimba starea din on in off si viceversa. Toate functionalitatile pianului sunt executabile doar in starea de on.
 +  * Difuzorul se foloseste utilizand functiile din biblioteca Arduino tone(difuzor,​ frecv) si noTone(difuzor) care reproduc un sunet de o anumita frecventa trimisa ca parametru.
 +  * Led-ul rgb dispune de 3 pini pentru fiecare culoare si un cathod conectat la GND. Folosesc decat pinii digitali conectati la rosu si verde. Atunci cand vreau ca led-ul sa fie rosu apelez writeLed(red,​ green) cu parametrii (255, 0), iar cand vreau verde cu (0, 255). Functia writeLed contine doar 2 digitalWrite-uri la cei 2 pini.
 +  * Fotorezistentele sunt conectate la pinii analogici si sunt cele care inregistreaza intensitatea luminii. Daca valoarea citita e mai mare decat un TRESHOLD, atunci nu se va intampla nimic. In caz contrar, se va decide nota muzicala ce va fi cantata de pian.
 +  * Am adaugat si o functie printPianoState() care printeaza la interfata seriala mesaje doar atunci cand pianul isi schimba starile de activitate.
 +  * O alta functionalitate adaugata este accea ca dupa 10 secunde in starea de ON in care nu s-a cantat nicio nota muzicala pianul sa se opreasca. S-au folosit 2 variabile globale currentTime si lastTime impreuna cu functia millis().
 +
 +Notele muzicale s-au calculat pe baza algoritmului descris la urmatorul link: [[https://​www.instructables.com/​EAL-Arduino-Laser-Harp/​]]
 +
 +Exemplu de rulare al algoritmului:​
 +
 +  * Daca vrem sa aflam frecventa lui D# si stim ca A este 440Hz, mai intai ne uitam sa vedem cate semitonuri sunt intre A si D#(A, A#, B, C, C#, D, D#). Observam ca sunt 6, deci frecventa lui D# este 440 * ((2^(1/​12)^6) care este aproximativ 622Hz.
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
 +Am implementat toata descrierea proiectului.
 +
 +Link la DEMO: [[https://​youtu.be/​QCsH9M4IrD8]]
  
 ===== Concluzii ===== ===== Concluzii =====
 +
 +Am reusit sa implementez tot ce mi-am propus. Consider ca a fost un proiect interesant la care a trebuit sa incorporez si idei de design in crearea cadrului ce suporta diodele si alegerea dispunerii "​clapelor"​ pianului.
 +Partea de software nu mi-a dat batai de cap, spre deosebire de partea de hardware, din cauza numarului mare de fire ce nu se puteau neinterescta si slabei calitatii de legatura intre diode si fire.
  
 ===== Download ===== ===== Download =====
 +
 +Arhiva ce contine codul sursa si schemele: {{:​pm:​prj2022:​agmocanu:​331cb_postolache_alexandru-gabriel_proiect_pm.zip|}}
 +
 +Codul se mai gaseste si aici: [[https://​github.com/​alexP22-create/​PM-FAIR/​blob/​main/​proiect.ino]]
 +
 +PDF: {{:​pm:​prj2022:​agmocanu:​laser_piano_milestone2.pdf|}}
  
 ===== Jurnal ===== ===== Jurnal =====
  
   * **7/​5/​2022**:​ realizare pagina wiki + schema bloc (Milestone 1)   * **7/​5/​2022**:​ realizare pagina wiki + schema bloc (Milestone 1)
 +  * **8/​5/​2022**:​ comandarea pieselor
 +  * **10/​5/​2022**:​ research despre lucrul cu piesele comandate
 +  * **19/​5/​2022**:​ legarea componentelor si realizarea schemei electrice
 +  * **24/​5/​2022**:​ finalizarea codului pentru partea software
 +  * **25/​5/​2022**:​ mici retusuri si testare
 +  * **26/​5/​2022**:​ finalizare pagina OCW (Milestone 2)
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
 +  * [[https://​www.instructables.com/​Laser-Piano-DIY/​]]
 +  * [[https://​www.instructables.com/​EAL-Arduino-Laser-Harp/​]]
 +  * [[https://​www.instructables.com/​Light-Sensor-Photoresistor-Arduino-Tinkercad/​]]
 +  * [[https://​create.arduino.cc/​projecthub/​reverendfuzzy/​simple-on-off-pushbutton-f637a7]]
 +  * [[https://​electropeak.com/​learn/​interfacing-5-v-5-mw-dot-laser-diode-module-with-arduino/​]]
 +  * [[https://​create.arduino.cc/​projecthub/​muhammad-aqib/​arduino-rgb-led-tutorial-fc003e]]
 +  * [[https://​www.arduino.cc/​en/​Tutorial/​BuiltInExamples/​toneMelody]]
 +
  
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2022/agmocanu/laserpiano.1652073151.txt.gz · Last modified: 2022/05/09 08:12 by apostolache2211
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