Differences

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

Link to this comparison view

pm:prj2025:rnedelcu:dan_andrei.cretu03 [2025/05/13 09:45]
dan_andrei.cretu03
pm:prj2025:rnedelcu:dan_andrei.cretu03 [2025/05/28 14:57] (current)
dan_andrei.cretu03 [Rezultate Obţinute]
Line 1: Line 1:
-Pedală de efect pentru chitară electrică +===== Pedală de efect pentru chitară electrică =====
-===== Introducere ​=====+
  
-<note tip> +<note tip>  
-Acest proiect constă în realizarea unei pedale de efect audio pentru chitară electrică, care aplică ​două efecte sonore:+Acest proiect constă în realizarea unei pedale de efect audio pentru chitară electrică, care aplică ​mai multe efecte sonore: 
 + 
 +Overdrive – pentru a satura semnalul și a obține un sunet distorsionat,​ specific rock-ului clasic.
  
-Overdrive ​– pentru a satura semnalul și a obține un sunet distorsionat,​ specific rock-ului clasic+Tremolo ​– pentru a modula volumul semnalului audio într-o manieră periodică.
  
-Tremolo ​– pentru a modula volumul semnalului audio într-o manieră periodică, controlabilă de utilizator+Reverb ​– simulează modul în care sunetul se reflectă și se estompează într-un spațiu închis.
  
-Efectele sunt controlate de un microcontroller STM32, folosind ​periferice ​precum ​ADC (pentru citirea potențiometrelor care controlează intensitatea fiecărui efect), PWM (pentru modularea semnalului audio în cazul tremolo-ului) și GPIO (pentru controlul ​on/off al efectelor prin butoane ​sau footswitch).+Efectele sunt controlate de un microcontroler Arduino UNO R3, folosind ​componente ​precum ​DAC (digital to analog converter), PWM (pentru modularea semnalului audio) și GPIO (pentru controlul ​selecției ​efectelor prin butoane).
  
 Scopul proiectului este de a crea o pedală de chitară digitală, compactă și personalizabilă,​ care poate fi utilizată în locul unor pedale comerciale, costisitoare sau rigide ca funcționalitate. Scopul proiectului este de a crea o pedală de chitară digitală, compactă și personalizabilă,​ care poate fi utilizată în locul unor pedale comerciale, costisitoare sau rigide ca funcționalitate.
Line 17: Line 18:
 ===== Descriere generală ===== ===== Descriere generală =====
  
-<note tip> +<note tip> Proiectul meu presupune realizarea unei pedale de efect pentru chitară electrică care include efecte audio clasice, precum ​overdrive și tremolo. Scopul pedalei este de a îmbunătăți experiența sonoră a chitaristului,​ aducând un sunet distorsionat (overdrive) și un efect de modulație al volumului (tremolo). Pedala va fi controlată printr-un ​microcontroler ​care va procesa semnalul audio.
-Proiectul meu presupune realizarea unei pedale de efect pentru chitară electrică care include ​două efecte audio clasiceoverdrive și tremolo. Scopul pedalei este de a îmbunătăți experiența sonoră a chitaristului,​ aducând un sunet distorsionat (overdrive) și un efect de modulație al volumului (tremolo). Pedala va fi controlată printr-un ​microcontroller ​care va procesa semnalul audio și va permite ajustarea parametrilor efectelor prin potențiometre. +
 Pedala va include următoarele module: Pedala va include următoarele module:
  
-  * Intrare și ieșire audio: Semnalul audio al chitarei va fi preluat și trimis prin intermediul jack-urilor audio standard.+Intrare și ieșire audio: Semnalul audio al chitarei va fi preluat și trimis prin intermediul jack-urilor audio standard.
  
-  * Microcontroller: Modulul principal de procesare a semnalului, care controlează efectele ​de overdrive și tremolo, prin algoritmi software.+Microcontroler: Modulul principal de procesare a semnalului, care controlează efectele, prin algoritmi software.
  
-  * Control prin potențiometreUtilizatorul va putea ajusta intensitatea overdrive-ului și rata/​depth-ul tremolo-ului. +SelecțieEfectele pot fi selectate cu ajutorul unui buton.
- +
-  * Interfață vizuală: Va include un display LCD/LED care va afișa informații despre statusul efectului activ și setările curente.+
  
 Interacțiunea dintre module: Interacțiunea dintre module:
-Semnalul audio intră în sistem prin jack-ul de intrare, este procesat de microcontroller, iar semnalul procesat iese prin jack-ul de ieșire.+Semnalul audio intră în sistem prin jack-ul de intrare, este procesat de microcontroler, iar semnalul procesat iese prin jack-ul de ieșire.
  
-Utilizatorul poate ajusta efectele în timp real folosind ​potențiometrele.+Utilizatorul poate ajusta efectele în timp real folosind ​butoane.
  
-Microcontrollerul ​controlează aplicațiile ​de overdrive și tremolo ​prin algoritmi, iar statusul și setările sunt vizualizate pe interfața vizuală.+Microcontrolerul ​controlează aplicațiile prin algoritmi.
 </​note>​ </​note>​
  
Line 43: Line 40:
 Listă de componente hardware Listă de componente hardware
  
-Microcontroller: ​STM32F103C8T6+Microcontroller: ​Arduino UNO R3
  
-Control ​analog2x Potențiometre liniare 10kΩ – pentru reglaj: gain (overdrive) și rate/Depth (tremolo)+Control: ​Buton simplu
  
-Intrare/​ieșire audio: +Intrare/​ieșire audio: 2x Jack mono 6.35mm (1/4”) cu pini PCB – pentru intrare/​ieșire chitară
-  * 2x Jack mono 6.35mm (1/4”) cu pini PCB – pentru intrare/​ieșire chitară +
- +
-  * 2x Condensatori de cuplare audio (100nF – 1µF) – blocare componentă DC+
    
-Rezistențe ​10kΩ – 100kΩ – pentru atenuare ​și biasare semnal audio+Rezistențe ​si condensatoare ​pentru atenuare ​si filtrarea semnalului
  
-Overdrive stage: +Overdrive stage: ​DAC, unde ma intereseaza in mod special amplificatorul operational si diodele ​pentru ​amplificarea si clipping-ul semnalului
-  * 2x Diodă 1N4148 / LED-uri rosii (clipping simetric) – pentru ​distorsionare semnal+
  
-  * Op-amp (ex: LM358, TL072, NE5532) – opțional, dacă vrei overdrive analog (în loc de simulare digitală)+Fire
  
-Tremolo stage: +Rezistenta ​de 5k legata ​la masa creeaza un divizor de tensiune, stabilizand semnalul ce vine de la chitara.
-PWM pin de la microcontroller – pentru modulație volum+
  
-  * 1x MOSFET N-channel ​(ex: 2N7000 sau IRF540N– control volum semnal+Condensatorul de 0.47 µF de la intrare protejeaza restul componentelor de tensiuni nedorite si pastreaza numai variatiile audio utile. ​(cel putin in teorie)
  
-  * 1x Condensator electrolitic (10µF – 100µF) – smoothing PWM dacă ai nevoie+Filtrul trece jos de la iesire elimina zgomotele nedorite.
  
-Alte periferice+{{:pm:​prj2025:​rnedelcu:​hardware_pedala.jpeg?​600|}} 
-  * LCD I2C 16x2 – afișaj pentru parametri efect+</​note>​
  
-  * Encoder rotativ sau butoane – opțional, pentru schimbare moduri/​parametri+===== Software Design =====
  
-  * Buzzer piezo – opțional, semnal de pornire/​operații 
  
-Alimentare: +<note tip> 
-  * Sursă de alimentare 9V DC sau baterie+Software-ul este scris în limbajul Arduino și rulează pe un microcontroller Arduino UNO R3. Acesta procesează semnalul audio de la o chitară electrică în timp real și aplică unul dintre cele cinci efecte sonore: bypass, overdrive, tremolo și reverb.
  
-  * Regulator de tensiune 3.3V/5V (AMS1117 sau LM7805) – în funcție de cerințele microcontrollerului+Structura principală a programului include:
  
-Conectică & prototipare:​ +Citirea semnalului audio analogic de la chitară (pin A0).
-  * Breadboard mare+
  
-  * Fire jumper+<code c++> 
 +lastButtonState = buttonState;​
  
-  ​* Pin headers+  ​unsigned int raw = analogRead(ADC_PIN);​ 
 +  raw = (raw + 1) / 4 - 1;
  
-  ​* Fire audio ecranate ​(pentru conexiuni curate)+  ​unsigned int out = applyEffect(((float)raw) / SIGNAL_MAX) * SIGNAL_MAX;​ 
 +</​code>​
  
-  * LED pentru stare sistem+Prelucrarea semnalului prin funcții specifice fiecărui efect audio (distorsiune,​ tremolo, reverb etc.).
  
- Rezistență 330Ω pentru LED + * Tremolo
-{{:​pm:​prj2025:​rnedelcu:​hardware_dan.jpeg?​200|}} +
-</​note>​+
  
-===== Software Design =====+<code c++>
  
 +int index = 0;
 +float applyTremolo(float x) {
 +  // version 1
 +  index++;
 +
 +  float Fs = TIMER / 8.0f;
 +  float Fx = 5.0f;
 +  float alpha = 0.25f;
 +  float trem = (1.1f + alpha * sin(2.0f * M_PI * index * (Fx / Fs)));
 +
 +  return trem * x * 2.0f;
 +}
 +
 +</​code>​
 +
 +
 + * Overdirve
 +
 +<code c++>
 +float applyDistortion(float x) {
 +  x *= 1.75f;
 +
 +  if (x > 1.0f) x = 1.0f;
 +  if (x < 0.0f) x = 0.0f;
 +
 +  float y;
 +  if (x < 0.2f)
 +    y = 0.0f;
 +  else if (x > 0.7f)
 +    y = 1.0f;
 +  else
 +    y = x * x * (3 - 2 * x);  // Smooth curve in between
 +
 +  return y;
 +}
 +</​code>​
 +
 + * Reverb
 +
 +<code c++>
 +uint8_t reverbBuffer[REVERB_BUFFER_SIZE];​
 +int reverbIndex = 0;
 +float applyReverb(float x) {
 +  // Read the delayed sample from buffer
 +  int delayedIndex = (reverbIndex - REVERB_DELAY + REVERB_BUFFER_SIZE) % REVERB_BUFFER_SIZE;​
 +  float delayedSample = reverbBuffer[delayedIndex] / 255.0f;
 +
 +  // Mix current input with decayed delayed sample
 +  float out = x + REVERB_DECAY * delayedSample;​
 +
 +  // Store current output in the buffer
 +  reverbBuffer[reverbIndex] = (uint8_t)(adjustAmplitude(out) * 255);
 +  reverbIndex = (reverbIndex + 1) % REVERB_BUFFER_SIZE;​
 +
 +  return adjustAmplitude(out);​
 +}
 +</​code>​
 +
 +Scrierea semnalului procesat pe un DAC extern (PCF8591) pentru ieșirea audio analogică.
 +
 +Controlul efectului activ printr-un buton fizic conectat la pinul A1 – fiecare apăsare schimbă efectul curent.
 +
 +<code c++>
 +   int buttonState = digitalRead(BUTTON);​
 +   
 +   if (lastButtonState == HIGH && buttonState == LOW) {
 +     ​currentEffect = (currentEffect + 1) % MAX_EFFECT; ​ // Next effect
 +     ​Serial.println(currentEffect);​
 +     ​delay(200);​ // Debounce simplu
 +   }
 +   
 +   ​lastButtonState = buttonState;​
 +</​code>​
 +
 +Algoritmi de procesare audio implementați în funcții dedicate fiecărui efect, folosind formule matematice simple și buffer circular (pentru reverb).
 +
 +<code c++>
 +#define ADC_PIN A0        // Analog input from guitar signal
 +#define BUTTON A1
 +#define SIGNAL_MAX 255
 +
 +#define TIMER 15625
 +
 +#define REVERB_BUFFER_SIZE 1000  // Adjust based on available RAM
 +#define REVERB_DECAY 0.75f       // How much of the echo is preserved
 +#define REVERB_DELAY 800         // How far back in time (in samples) the echo is
 +
 +#define MAX_EFFECT 5
 +</​code>​
 +
 +Acest software permite utilizatorului să comute dinamic între efecte și să obțină sunete expresive folosind doar hardware minim și procesare digitală în timp real.
  
-<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>​ </​note>​
  
Line 107: Line 183:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării proiectului vostru.+Dupa multe incercari, am reusit sa ajung la o versiune finala. 
 + 
 +Partea de hardware ramas mai simpla decat ce mi-as fi dorit, fara valori reglate prin potentiometru. 
 + 
 +Am experimentat cu mai multe efecte, cele mai reusite fiind cel de distors, tremolo si reverb. 
 + 
 +Nu am reusit sa filtrez suficient de bine semnalul astfel incat semnalul ajuns la amplificator sa fie curat. 
 + 
 + * ADC - analogRead() 
 + 
 + * I2C - comunicarea cu DAC-ul 
 + 
 + * GPIO - pinMode 
 + 
 + * timere pentru tremolo 
 </​note>​ </​note>​
  
 ===== Concluzii ===== ===== Concluzii =====
  
-===== Download =====+Nu am. 
 +}===== Download =====
  
 <note warning> <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ă ;-). +{{:pm:prj2025:rnedelcu:proiect_hau.zip|}}
- +
-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>​ </​note>​
  
pm/prj2025/rnedelcu/dan_andrei.cretu03.1747118734.txt.gz · Last modified: 2025/05/13 09:45 by dan_andrei.cretu03
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