Differences

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

Link to this comparison view

pm:prj2022:agmocanu:laserpiano [2022/05/25 21:51]
apostolache2211
pm:prj2022:agmocanu:laserpiano [2022/06/02 18:30] (current)
apostolache2211
Line 20: Line 20:
  
 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 41: Line 43:
 Schema Electrica: Schema Electrica:
  
-{{:​pm:​prj2022:​agmocanu:​7_schema_circuit.jpg|}}+{{:​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.1653504678.txt.gz · Last modified: 2022/05/25 21:51 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