Light-based Musical Instrument
Introducere
Nume: Popescu Maria-Mateea
Grupa: 331CA
Prezentarea pe scurt a proiectului vostru:
Proiectul este un instrument muzical pe baza de lumina. Este alcatuit din 4 recipiente, in momentul in care unu din cele 4 obiecte este acoperit sau lumina nu mai poate ajunge la el, incepe sa cante pe o anumita tonalitate. In acelasi timp, pe display o sa apara numarul notei care este cantata si un led asociat o sa lumineze. Mai este si un buton care atunci cand e apasat tonalitatea o sa se schimbe.
-
Am zis ca sigur se poate face ceva pornind de la asta. La fel cum pentru flaut si ocarina ai nevoie sa acoperi diferite gauri pentru a canta anumite note, asa si la acest instrument e nevoie sa acoperi recipientele pentru a scoate sunete.
Descriere generală
Pentru realizarea proiectului este nevoie de 4 senzori de lumina, fiecare fiind lipit de baza unui recipient. Recipientul este deschis in partea opusa fata de unde se afla senzorul, astfel incat atunci cand este acoperita aceasta zona, senzorul sa nu mai primeasca deloc lumina. In mometul in care acest lucru se intampla, buzzerul o sa porneasca sa cante, pe display o sa apara nota care este cantata si un led asociat o sa se aprinda.
Pe suport este si un buton care atunci cand e apasat schimba tonalitatea notelor. Pentru fiecare recipient o sa fie cate 2 tonalitati una joasa si una ridicata.
Cand senzorul primeste iar lumina, buzzerul se opreste si led-ul se stinge, iar pe dislay o sa apara urmatoarele optiuni: “Vrei sa canti?” daca toate fotorezistentele sunt luminate, “Tonalitate schimbata” daca butonul este apsat sau nota de la alt senzor acoperit.
Hardware Design
Lista piese:
Aruino Uno
ecran OLED
4 senzori de lumina
4 LED-uri
buzzer
breadboard
baterie
fire
buton
Software Design
Pentru realizarea proiectului am implementat urmatoarele functii
* void button_intrerrupt_handler():
pentru tratarea intreruperilor in momentul in care butonul este apasat;
functia este apelata in setup, in functia attachInterrupt;
* bool read_button():
* void press_button():
* void setup():
* void loop():
verific daca butonul este schimbat, atunci se schimba tonalitatea;
daca toate fotorezistentele sunt luminate se afiseaza un mesaj sugestiv;
se verifica pe rand fiecare fotorezistenta daca este acoperita. Daca una din ele nu mai primeste lumina, se lumineaza led-ul corespunzator fotorezistentei respective si se afiseaza nota corespunzatoare pe lcd. Este apelata ulterior functia care porneste buzzerul playNote;
* void playNote(int noteFrequency):
Biblioteci utilizate:
Rezultate Obţinute
Rezultatul final
Circuit
Demo
Concluzii
este foarte important sa citesti cu atentie documentatia functiilor specifice pentru dispozitivele pe care le folosesti;
atunci cand nu merge ceva nu e neaparat de la cod, ci poate unele fire nu sunt prinse bine sau nu sunt puse bine piesele;
trebuie sa iti iei piese de rezerva pentru ca se pot arde destul de usor;
Download
Bibliografie/Resurse