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 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.1716163679.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