Differences

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

Link to this comparison view

pm:prj2024:avaduva:andrei.serban1608 [2024/05/20 03:07]
andrei.serban1608 [Descriere generală]
pm:prj2024:avaduva:andrei.serban1608 [2024/05/27 21:53] (current)
andrei.serban1608
Line 24: Line 24:
 Arhitectura sistemului este destul de simplă. Un microcontroller specializat pentru a crea sintetizatoare preia date de la un senzor de proximitate și un set de butoane tactile și redă sunet către un difuzor. De asemenea, starea programului este afișată pe un display LCD, indicând utilizatorului parametrul curent. Arhitectura sistemului este destul de simplă. Un microcontroller specializat pentru a crea sintetizatoare preia date de la un senzor de proximitate și un set de butoane tactile și redă sunet către un difuzor. De asemenea, starea programului este afișată pe un display LCD, indicând utilizatorului parametrul curent.
  
 +{{:​pm:​prj2024:​avaduva:​there-mini.png|}}
  
 ===== Hardware Design ===== ===== Hardware Design =====
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 70: Line 68:
  
  
-<note tip> +Mediu de dezvoltare: Arduino IDE
-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 =====+Biblioteci 3rd party: [[https://​github.com/​electro-smith/​DaisyDuino|DaisyDuino]]
  
-<note tip+Sursa: 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru+ 
-</note>+<file ino demo.ino
 +#include "​DaisyDuino.h" 
 + 
 +DaisyHardware hw; 
 +static Oscillator osc; 
 + 
 +size_t num_channels;​ 
 + 
 +const int trigPin = D4; 
 +const int echoPin = D3; 
 +const int baud = 9600; 
 + 
 +int distance; 
 + 
 +float pitch, amp = 100; 
 + 
 +Switch pwrButton, effectButton;​ 
 + 
 +int on = 0, effect = 0; 
 + 
 +void MyCallback(float **in, float **out, size_t size) { 
 +  float sine_signal;​ 
 + 
 +  pwrButton.Debounce();​ 
 +  effectButton.Debounce();​ 
 + 
 +  osc.SetFreq(pitch);​ 
 +  osc.SetAmp(amp * on); 
 +    for (size_t i = 0; i < size; i++) { 
 +      sine_signal = osc.Process();​ 
 +      out[0][i] = sine_signal;​ 
 +      out[1][i] = sine_signal;​ 
 +    } 
 +
 + 
 +void setup() { 
 + 
 +  pwrButton.Init(1000,​ true, 26, INPUT_PULLUP);​ 
 +  effectButton.Init(1000,​ true, 27, INPUT_PULLUP);​ 
 + 
 +  pinMode(trigPin,​ OUTPUT); 
 +  pinMode(echoPin,​ INPUT); 
 +  Serial.begin(baud);​ 
 + 
 +  float sample_rate;​ 
 + 
 +  hw = DAISY.init(DAISY_SEED,​ AUDIO_SR_48K);​ 
 +  num_channels = hw.num_channels;​ 
 +  sample_rate = DAISY.get_samplerate();​ 
 +  osc.Init(sample_rate);​ 
 + 
 +  osc.SetWaveform(osc.WAVE_SIN);​ 
 +  osc.SetFreq(440);​ 
 +  osc.SetAmp(1);​ 
 + 
 +  DAISY.begin(MyCallback);​ 
 +
 + 
 +void loop() 
 +
 +  pwrButton.Debounce();​ 
 +  effectButton.Debounce();​ 
 + 
 +  digitalWrite(trigPin,​ LOW); 
 +  delayMicroseconds(2);​ 
 + 
 +  digitalWrite(trigPin,​ HIGH); 
 +  delayMicroseconds(10);​ 
 +  digitalWrite(trigPin,​ LOW); 
 + 
 +  distance = pulseIn(echoPin,​ HIGH); 
 +  delay(50);​ 
 + 
 +  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); 
 +  } 
 + 
 +  if (pwrButton.Pressed()) { 
 +    on = !on; 
 +    Serial.println(on ? "​Power:​ ON" : "​Power:​ OFF"​);​ 
 +  } 
 +  if (effectButton.Pressed()) { 
 +    effect = !effect; 
 +    Serial.print("​Effect:​ "); 
 +    Serial.println((!effect) ? "​Pitch"​ : "​Amp"​);​ 
 +  } 
 +
 + 
 + 
 +</file>
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Am rămas cu două mari lecții după finalizarea proiectului:​
  
-<note warning>​ +  - 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 ARMnici nu am găsit exemple bune pentru lucruri precum întreruperitimere sau ADC. 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surseschemeetcUn fişier README, ​un ChangeLog, un script ​de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+  - 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 Fairceea ce a dus la un weekend plin de research / implementare software. 
 + 
 +===== Download =====
  
-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**. +  ​{{:pm:prj2024:avaduva:theremini.zip| There-Mini}}
-</​note>​+
  
 ===== Jurnal ===== ===== Jurnal =====
Line 99: 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.1716163643.txt.gz · Last modified: 2024/05/20 03:07 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