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.
  • Scopul proiectului este de entertaiment. In loc sa cumperi un pian sau alt instrument, este mult mai ieftin sa faci tu acasa. Ideea a pornit atunci cand am vazut pe youtube pe cineva care canta la ocarinahttps://www.youtube.com/watch?v=VhvRAcsfPsI&ab_channel=TheHeartOfGaming
  • 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():

  • pentru citirea starii butonului;
  • se considera ca butonul a fost apasata o singura data atunci cand trec 10 milisecunde si intreruperea este gata;

* void press_button():

  • se verifica ce tip de tonalitatea trebuie sa fie;

* void setup():

  • se configureaza pinii;
  • se initializeaza oled-ul;
  • se adauga o intrerupere pentru buton;

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

  • daca una dintre fotorezistente nu este luminata, buzzerul canta o nota specifica, pana cand fotorezistenta este luminata iar;

Biblioteci utilizate:

  • Adafruit_SSD1306.h

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

pm/prj2023/apredescu/light-based-musical-instrument.txt · Last modified: 2023/05/29 21:45 by maria.popescu2704
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