Autor: Bucur Calin-Andrei
Grupa: 332CB

Introducere

Un instrument muzical care in loc de corzi are lasere si transmite cate o nota muzicala cand un laser este intrerupt.

Descriere generala

Dispozitivul functioneaza pe baza a 8 diode laser KY-008. Acestea sunt pornite permanent si lumineaza 8 receptori de laser ISO208 conectati la pinii digital I/O. Fiecare laser are asignata o nota muzicala. Cand unul dintre lasere este intrerupt, receptorul detecteaza aceasta schimbare, genereaza un semnal MIDI si il trimite pe interfata seriala catre laptop unde sunetul este interpretat si redat de catre un soft synth. De asemenea, pe unul dintre breadboard-uri se afla doua butoane pentru a schimba octava(mai inalta/joasa).

Schema Bloc

Hardware Design

  • Cele 8 receptoare se afla pe un breadboard. Fiecare receptor are un pinii conectati la VCC, GND respectiv la cate un pin digital input(2-9). La pinul de input este conectata si o rezistenta de pullup. Astfel, cand senzorul nu capteaza laser are valoarea HIGH, iar cand capteaza are valoarea LOW.
  • Cele 8 diode laser se afla pe un alt breadboard plasat opus fata de primul. Laserele au pinii conectati la VCC si GND. Pe acelasi breadboard se afla si cele doua butoane conectate la GND si la pinii digital input 12 si 13 care au setata rezistenta de pullup.

Schema electrica

Lista de Piese

Software Design

Am scris codul in Arduino IDE. Tot codul se afla in fisierul harp.c

Functia MIDImessage transmite cele 3 componente ale semnalului(comanda, nota si velocitatea) MIDI pe interfata seriala. Comanda este initializata global cu 144 care reprezinta comanda de noteON, iar velocitatea este initializata cu 20.

De asemenea, setez minimul si maximul range-ului MIDI si anume 21 respectiv 129 iar octava initiala este cea intre 21 si 33. Fiecare nota este calculata in functie de nota A din octava respectiva folosind array-ul global notes_offset.

In setup() setez pinii de input si initializez interfata seriala.

In loop() parcurg fiecare pin corespunzator unui receptor si calculez nota corespunzatoare “corzii” respective. Daca valoarea senzorului este HIGH, inseamna ca laserul este intrerup si trimit nota corespunzatoare folosind functia MIDImessage. Daca valoarea este LOW, trimit o nota cu velocitate 0 echivalenta cu noteOFF. De asemenea, verific daca unul din butoane este apasat si octava curenta se afla in range-ul permis, caz in care urc sau scad nota A cu 12. Folosesc un flag pentru a garanta ca se coboara/urca o singura octava per apasare de buton.

Rezultate Obtinute

Am reusit sa fac harpa sa fie functionala si sa sune decent. Harpa acopera toate notele muzicale cu exceptia celor cu diez sau bemol, deoarece ar mai fi fost nevoie de cativa senzori in plus si erau out-of-stock PESTE TOT :( Partea de hardware a fost mai problematica, deoarece modulele dioda laser au imperfectiuni si a fost foarte minutios sa le pot aranja in asa fel incat sa lumineze senzorii.

Demo Video

Concluzii

In concluzie, a fost un proiect la care am lucrat cu placere chiar daca a fost destul de migalos. In principiu sunt mandru de cum a iesit desi imi pare rau ca nu am mai putut face rost de cativa senzori pentru a acoperi toate notele.

Download

Bibliografie/Resurse

pm/prj2021/avaduva/orgalaser.txt · Last modified: 2021/05/27 13:12 by diana_ioana.tascan
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