Differences

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

Link to this comparison view

pm:prj2024:avaduva:andrei.serban1608 [2024/05/24 20:46]
andrei.serban1608 [Software Design]
pm:prj2024:avaduva:andrei.serban1608 [2024/05/27 21:53] (current)
andrei.serban1608
Line 52: Line 52:
  
 ==== Montaj ==== ==== Montaj ====
- 
-TODO: Adaugă boost converter 
  
 Am conectat toate ground-urile între ele. Am conectat toate ground-urile între ele.
Line 74: Line 72:
 Biblioteci 3rd party: [[https://​github.com/​electro-smith/​DaisyDuino|DaisyDuino]] Biblioteci 3rd party: [[https://​github.com/​electro-smith/​DaisyDuino|DaisyDuino]]
  
-Structură de date principală:​ Listă circulară pentru a cicla prin preset-urile/​parametrii sintetizatorului +Sursa:
- +
-Exemplu de trimitere a datelor de la senzor la un oscilator pe sintetizator:+
  
 <file ino demo.ino>​ <file ino demo.ino>​
Line 90: Line 86:
 const int baud = 9600; const int baud = 9600;
  
-long duration; 
 int distance; int distance;
  
-float pitch;+float pitch, amp = 100; 
 + 
 +Switch pwrButton, effectButton;​ 
 + 
 +int on = 0, effect = 0;
  
 void MyCallback(float **in, float **out, size_t size) { void MyCallback(float **in, float **out, size_t size) {
   float sine_signal;​   float sine_signal;​
 +
 +  pwrButton.Debounce();​
 +  effectButton.Debounce();​
 +
   osc.SetFreq(pitch);​   osc.SetFreq(pitch);​
-  for (size_t i = 0; i < size; i++) { +  ​osc.SetAmp(amp * on); 
-    sine_signal = osc.Process();​ +    ​for (size_t i = 0; i < size; i++) { 
-    out[0][i] = sine_signal;​ +      sine_signal = osc.Process();​ 
-    out[1][i] = sine_signal;​ +      out[0][i] = sine_signal;​ 
-  }+      out[1][i] = sine_signal;​ 
 +    }
 } }
  
 void setup() { void setup() {
 +
 +  pwrButton.Init(1000,​ true, 26, INPUT_PULLUP);​
 +  effectButton.Init(1000,​ true, 27, INPUT_PULLUP);​
 +
   pinMode(trigPin,​ OUTPUT);   pinMode(trigPin,​ OUTPUT);
   pinMode(echoPin,​ INPUT);   pinMode(echoPin,​ INPUT);
Line 117: Line 125:
   osc.Init(sample_rate);​   osc.Init(sample_rate);​
  
-  osc.SetWaveform(osc.WAVE_SQUARE);+  osc.SetWaveform(osc.WAVE_SIN);
   osc.SetFreq(440);​   osc.SetFreq(440);​
-  osc.SetAmp(0.3);+  osc.SetAmp(1);
  
   DAISY.begin(MyCallback);​   DAISY.begin(MyCallback);​
Line 126: Line 134:
 void loop() void loop()
 { {
 +  pwrButton.Debounce();​
 +  effectButton.Debounce();​
 +
   digitalWrite(trigPin,​ LOW);   digitalWrite(trigPin,​ LOW);
   delayMicroseconds(2);​   delayMicroseconds(2);​
Line 133: Line 144:
   digitalWrite(trigPin,​ LOW);   digitalWrite(trigPin,​ LOW);
  
-  ​duration ​= pulseIn(echoPin,​ HIGH)+  ​distance ​= pulseIn(echoPin,​ HIGH); 
-  distance = duration * 0.034/2+  delay(50);
-  delay(65);+
  
-  pitch = min((220.0 * ((float) distance / 30)) + 220.0, 440.0);+  ​if (effect == 0) { 
 +    ​pitch = min((220.0 * ((float) distance / 1200)) + 220.0, 440.0); 
 +  } else if (effect == 1) { 
 +    amp = min((float) distance / 1200, 100.0f); 
 +  }
  
-  Serial.print("Distance: "); +  ​if (pwrButton.Pressed()) { 
-  ​Serial.println(distance); +    on = !on; 
- +    ​Serial.println(on ? "PowerON" : "​Power:​ OFF"); 
-  Serial.print("​Pitch: "); +  ​
-  Serial.println(pitch);+  if (effectButton.Pressed()) { 
 +    ​effect = !effect; 
 +    Serial.print("​Effect: "); 
 +    Serial.println((!effect) ? "​Pitch"​ : "​Amp"​); 
 +  }
 } }
 +
  
 </​file>​ </​file>​
  
-TODO: exemple cod+===== Concluzii =====
  
-===== Rezultate Obţinute =====+Am rămas cu două mari lecții după finalizarea proiectului:​
  
-<note tip> +  - Data viitoare, pentru un proiect de genul, ar trebui să folosesc un uC cu mai multă documentație / mai multe exemple disponibile pe internet. Pe lângă că a fost imposibil să găsesc o bibliotecă pentru ecranul LCD pe I2C care să compileze pe ARM, nici nu am găsit exemple bune pentru lucruri precum întreruperi,​ timere sau ADC
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+  - Trebuie să mă apuc mai din timp pentru un proiect embedded. Toate componentele hardware de care am avut nevoie le-am obținut abia vinerea dinaintea PM Fair, ceea ce a dus la un weekend plin de research ​implementare software.
-</note> +
- +
-===== Concluzii =====+
  
 ===== Download ===== ===== Download =====
  
-<note warning>​ +  ​{{:pm:prj2024:avaduva:theremini.zip| There-Mini}}
-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**. +
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
Line 171: Line 183:
 19.05: Am realizat că semnalul difuzat de pinul echo al lui HC-SR04 este de fapt un semnal digital, așa că nu o să am nevoie de un pin de ADC. 19.05: Am realizat că semnalul difuzat de pinul echo al lui HC-SR04 este de fapt un semnal digital, așa că nu o să am nevoie de un pin de ADC.
  
-<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>​ +  ​[[https://​github.com/electro-smith]]
-Listă cu documente, datasheet-uri, resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +
-</note>+
  
 <​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/prj2024/avaduva/andrei.serban1608.1716572779.txt.gz · Last modified: 2024/05/24 20:46 by andrei.serban1608
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