331CB Alexandru-Gabriel POSTOLACHE (110048)

LASER PIANO

Introducere

Proiectul ales de mine este un pian laser.

  • Acesta produce sunete muzicale diferite in momentul in care se ating “corzile”.
  • Scopul proiectului este de a implementa un pian mai iesit din comun folosind numai piese arduino.
  • Ideea de la care am plecat a fost existenta unui pian intangibil care in acelasi timp produce un efect vizual placut pe intuneric.
  • Consider ca este util pentru alti oameni, in special pentru copii, deoarece le poate dezvolta interesul atat in muzica, cat si in arduino.

Descriere generală

Proiectul are la baza interactiunea dintre o dioda laser si o fotorezistenta. In momentul in care un obstacol intrerupe laser-ul, fotorezistenta va simti acest lucru si va transmite mai departe difuzorului sa produca un anumit sunet muzical.

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 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:

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.

Hardware Design

Piesele folosite sunt:

  • placuta Arduino Uno R3
  • 6 diode laser rosii
  • 6 fotorezistente
  • rezistente de 1K si 10K ohm
  • cablu de alimentare
  • 1 difuzor
  • 1 led rgb
  • 1 buton
  • fire mama-tata si tata-tata
  • 2 breadboard-uri
  • cadru din polistiren

Schema Electrica:

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

Am implementat toata descrierea proiectului.

Link la DEMO: https://youtu.be/QCsH9M4IrD8

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

Jurnal

  • 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

pm/prj2022/agmocanu/laserpiano.txt · Last modified: 2022/06/02 18:30 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