Differences

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

Link to this comparison view

pm:prj2024:aungureanu:cristinaionescu.02 [2024/05/21 19:54]
cristina.ionescu02 [Software Design]
pm:prj2024:aungureanu:cristinaionescu.02 [2024/05/26 15:43] (current)
cristina.ionescu02 [Rezultate Obţinute]
Line 32: Line 32:
 ===== Software Design ===== ===== Software Design =====
  
-Descrierea codului aplicaţiei ​(firmware)+==== Descrierea codului aplicaţiei: ​==== 
-  * mediu de dezvoltare -> Arduino IDE + 
-  * librării ​-> ToneTimer +  ​* **mediu de dezvoltare** -> Arduino IDE 
-  * algoritmi ​şi structuri pe care plănuiţi ​să le implementaţi + 
-  * (etapa 3surse şi funcţii implementate+  * **biblioteci:​** 
 +    * Tone pentru a putea reda sunete pe mai multe difuzoare in acelasi timp 
 +    * Timer - este folosit pentru un delay intre notele schimbate, ca in cazul in care sunt fluctuatii foarte mici de distante si nu este necesara schimbarea notei sa nu se ia in calcul 
 + 
 +  * **funcţii implementate** 
 +    * SonarSenzor care intoarce dinstanta  
 + 
 +<code> 
 +long SonarSensor(int trigPin,int echoPin) 
 +{ 
 +  ​digitalWrite(trigPin,​ LOW); 
 +  delayMicroseconds(2);​ 
 +  digitalWrite(trigPin,​ HIGH); 
 +  delayMicroseconds(10);​ 
 +  digitalWrite(trigPin,​ LOW); 
 + 
 +  long duration = pulseIn(echoPin,​ HIGH); 
 +  long distance = (duration/​2) / 29.1; 
 + 
 +  return distance; 
 +
 +</​code>​ 
 + 
 +  * **algoritmi ​si structuri pe care plănuiti să le implementati:​** 
 +    * pentru calcularea distantelor am folosit functia "​SonarSensor"​ 
 +    * dupa ce am facut rost de distantele receptionate de cei doi senzori, cele pentru care vom schimba notele se vor schimba doar daca a fost o diferenta de cel putin 2 cm intre distanta actuala si cea precedenta. 
 +<​code>​ 
 +  ​if (abs(firstDistance1 - distance1) >= 2 && timer1.read() > timer) { 
 +    firstDistance1 = distance1;​ 
 +  } else { 
 +    distance1 = firstDistance1;​ 
 +  } 
 +</​code>​ 
 +    ​distanta cu care vom lucra este de 40 de cm, tot ce e mai mare de atat nu va avea repartizat vreo nota 
 +    * aceasta distanta este impartita in 5 regiuni de cate 8 cm; de la cea mai apropiata de senzor, la cea mai indepartata avem urmatoarele note: NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4, NOTE_G4 
 +    * o schimbare de nota se va face doar daca distanta de schimbare se afla in limitele notei respective si daca a trecut un timp mai mare decat "​timer"​ de cand a fost produsa ultima schimbare 
 +<​code>​ 
 +  if (distance1 >= 0 && distance1 < 8 && timer1.read() > timer) { 
 +    tone1.play(NOTE_C4);​ 
 +    timer1.stop();​ 
 +    timer1.start();​ 
 +  } else if (distance1 >= 8 && distance1 < 16 && timer1.read() > timer) { 
 +    tone1.play(NOTE_D4);​ 
 +    timer1.stop();​ 
 +    timer1.start();​ 
 +  } else if (distance1 >= 16 && distance1 < 24 && timer1.read() > timer) { 
 +    tone1.play(NOTE_E4);​ 
 +    timer1.stop();​ 
 +    timer1.start();​ 
 +  } else if (distance1 >= 24 && distance1 < 32 && timer1.read() > timer) { 
 +    tone1.play(NOTE_F4);​ 
 +    timer1.stop();​ 
 +    timer1.start();​ 
 +  } else if (distance1 >= 32 && distance1 < 40 && timer1.read() > timer) { 
 +    tone1.play(NOTE_G4);​ 
 +    timer1.stop();​ 
 +    timer1.start();​ 
 +  } else if (timer1.read() > timer){ 
 +    tone1.stop();​ 
 +  } 
 +</​code>​ 
 + 
 +   * **Calibrarea si optimizarea elementelor:​** 
 +     * timerul si acea diferenta de 2 cm ma ajuta la calibrare 
 +     * de foarte multe ori sunt fluctuatii mici intre distantele interceptate de senzori, iar intr-un caz de genul nu este mereu nevoie si de o schimbare de nota 
 +     * cu aceste 2 imbunatatiri am reusit sa calibrez si optimizez performanta pianului 
 + 
 +  * **Element de noutate** 
 +    * este o experienta unica sa canti la un astfel de instrument daca nu ai avut sansa sa incerci un theremis 
 + 
 +  * **Noutiuni folosite din laborator:​** 
 +    * GPIO -> pentru trimiterea si receptia semnalelor de la senzorii ultrasonici 
 +    * UART -> pentru comunicarea seriala cu calculatorul (pentru a avea si o evidenta vizuala la ce se intampla, afisez in interfata seriala distantele interceptate de senzori si timpul intregistrat de timere) 
 +    * Timere 
 +    * PWM -> pentru generarea tonurilor audio 
 +    * Intreruperi -> implicit utilizate de temporizatoare si functiile de tonuri
  
  
-<note tip> 
-Descrierea codului aplicaţiei (firmware): 
-  * mediu de dezvoltare (if any) (e.g. AVR Studio, CodeVisionAVR) 
-  * librării şi surse 3rd-party (e.g. Procyon AVRlib) 
-  * algoritmi şi structuri pe care plănuiţi să le implementaţi 
-  * (etapa 3) surse şi funcţii implementate 
-</​note>​ 
  
 ===== Rezultate Obţinute ===== ===== Rezultate Obţinute =====
  
-<note tip> +  * Demo -https://​youtu.be/de_qJpgqm_0
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +
-</note>+
  
-===== Concluzii ===== 
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +  * Arhiva ​cu schemele si codulCristina Ionescu333CC -> {{:pm:prj2024:aungureanu:pian_pe_distante.zip|}}
-O arhivă (sau mai multe dacă este cazul) ​cu fişierele obţinute în urma realizării proiectuluisursescheme, 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**. +
-</​note>​+
  
-===== Jurnal ===== 
  
-<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>​ +  ​* **Resurse Hardware** 
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +     * https://​docs.arduino.cc/​resources/​datasheets/​A000066-datasheet.pdf 
-</note>+     * https://​cdn.sparkfun.com/​datasheets/​Sensors/​Proximity/​HCSR04.pdf
  
-<​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</a></html>+  * **Resurse Software**  
 +     * https://github.com/​sstaub/​Timer 
 +     * https://​www.theengineeringprojects.com/​2015/​02/​interfacing-multiple-ultrasonic-sensor-arduino.html 
 +     * https://​github.com/​bhagman/​Tone
  
pm/prj2024/aungureanu/cristinaionescu.02.1716310473.txt.gz · Last modified: 2024/05/21 19:54 by cristina.ionescu02
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