Differences

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

Link to this comparison view

pm:prj2023:apredescu:light-based-musical-instrument [2023/05/28 01:32]
maria.popescu2704 [Software Design]
pm:prj2023:apredescu:light-based-musical-instrument [2023/05/29 21:45] (current)
maria.popescu2704 [Concluzii]
Line 6: Line 6:
  
 Prezentarea pe scurt a proiectului vostru: 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. In acelasi timp, pe display o sa apara numarul ​recipientului ​si un led asociat o sa lumineze.+  * 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 ocarina[[https://​www.youtube.com/​watch?​v=VhvRAcsfPsI&​ab_channel=TheHeartOfGaming]]   * 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 ocarina[[https://​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 scoate sunete diferite, asa si la acest instrument e nevoie sa acoperi recipientele pentru a scoate sunete.+  * 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ă ===== ===== 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 cifra recipientului ​si un led o sa se aprinda.+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.
  
-Cand senzorul primeste iar lumina, buzzerul se opreste ​si led-ul se stingePe display ​o sa apara in continuare cifra recipientului. In timp ce se canta si diferiti senzori sunt activati, numerele, reprezentand numarul fiecarui recipient, sunt afisate intr-o coada pe display, fiind sterse dupa ce eranul este plin.+Pe suport este si un buton care atunci cand e apasat schimba tonalitatea notelorPentru 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.
 +
 +
 +
 +{{ :​pm:​prj2023:​apredescu:​mateea_digrama.png |}}
  
-{{ :​pm:​prj2023:​apredescu:​diagrama_poza_mateea.png |}} 
  
  
Line 38: Line 42:
 ===== Software Design ===== ===== Software Design =====
  
 +Pentru realizarea proiectului am implementat urmatoarele functii
  
-Pentru realizarea proiectului am implementat urmatoarele functii: +* **void button_intrerrupt_handler()**:​
- * **void button_intrerrupt_handler()**:​+
     * pentru tratarea intreruperilor in momentul in care butonul este apasat;     * pentru tratarea intreruperilor in momentul in care butonul este apasat;
     * functia este apelata in setup, in functia attachInterrupt;​     * functia este apelata in setup, in functia attachInterrupt;​
-  ​* **bool read_button():**+* **bool read_button()**:
     * pentru citirea starii butonului;     * pentru citirea starii butonului;
     * se considera ca butonul a fost apasata o singura data atunci cand trec 10 milisecunde si intreruperea este gata;     * se considera ca butonul a fost apasata o singura data atunci cand trec 10 milisecunde si intreruperea este gata;
-  ​* **void press_button():**+* **void press_button()**:
     * se verifica ce tip de tonalitatea trebuie sa fie;     * se verifica ce tip de tonalitatea trebuie sa fie;
-  ​* **void setup():**+* **void setup()**:
     * se configureaza pinii;     * se configureaza pinii;
     * se initializeaza oled-ul;     * se initializeaza oled-ul;
     * se adauga o intrerupere pentru buton;     * se adauga o intrerupere pentru buton;
-  ​* **void loop():**+* **void loop()**:
     * verific daca butonul este schimbat, atunci se schimba tonalitatea;​     * verific daca butonul este schimbat, atunci se schimba tonalitatea;​
     * daca toate fotorezistentele sunt luminate se afiseaza un mesaj sugestiv;     * daca toate fotorezistentele sunt luminate se afiseaza un mesaj sugestiv;
-    * se verifica pe rand fiecare ​rezistenta ​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; +    * 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):​** +* **void playNote(int noteFrequency):​** 
-    * daca una dintre fotorezistente nu este luminata, buzzerul canta o nota specifica, pana cand fotorezistenta este luminata iar;+  * daca una dintre fotorezistente nu este luminata, buzzerul canta o nota specifica, pana cand fotorezistenta este luminata iar;
  
  
 Biblioteci utilizate: Biblioteci utilizate:
   * Adafruit_SSD1306.h   * Adafruit_SSD1306.h
 +  ​
  
  
-Codul si demo: 
-{{:​pm:​prj2023:​apredescu:​cod_demo.zip|}} 
  
  
  
  
 +===== Rezultate Obţinute =====
  
- +==== Rezultatul final ==== 
-===== Rezultate Obţinute =====+{{:​pm:​prj2023:​apredescu:​rezultat_final_mateea.jpg?​300|}}
  
 ==== Circuit ==== ==== Circuit ====
-{{ :​pm:​prj2023:​apredescu:​circuit_mateea.jpeg?​300 |}} +{{:​pm:​prj2023:​apredescu:​circuit_mateea.jpeg?​300|}}
  
  
 ==== Demo ==== ==== Demo ====
 +[[https://​youtu.be/​P5jQrjnLN2E]]
 +
 +
 +
 +
  
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+  * 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;
  
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
  
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. +===== Download =====
-</​note>​+
  
-===== Jurnal =====+Codul: 
 +{{:​pm:​prj2023:​apredescu:​mateea_cod.zip|}}
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
  
-<​note>​ + 
-Listă cu documente, datasheet-uri,​ resurse Internet ​folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +Laboratoare ​folosite
-</note>+  ​Laborator 2: [[pm:​laboratoare:​02|]] 
 +  ​Laborator 4: [[pm:​laboratoare:​04|]] 
 +  ​Laborator 6: [[pm:​laboratoare:​06|]] 
 + 
 +Alte resurse: 
 +  ​[[https://​www.instructables.com/​Illumaphone-Light-based-Electronic-Musical-Instrum/​]] 
 +  * [[https://​projecthub.arduino.cc/​ronbentley1/​16d57fe0-986a-4629-a6cb-4e69f8be61c5]] 
  
 <​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/prj2023/apredescu/light-based-musical-instrument.1685226738.txt.gz · Last modified: 2023/05/28 01:32 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