This is an old revision of the document!
Autor: Baltag Constantin, 335CA
Sintetizatorul cu efecte este un instrument muzical digital bazat pe microcontrolerul Arduino Uno. Acesta folosește o tastatură matriceală 4×4 pe post de claviatură pentru a reda note și aplică efecte audio în timp real, cum ar fi reverb simplu, vibrato și distorsion.
Scopul acestui proiect este de a explora concepte hardware de nivel scăzut (Timere, PWM, Întreruperi, ADC) și procesarea digitală a semnalelor (DSP) de bază, pentru a genera și manipula semnale audio fără a avea nevoie de echipament audio dedicat costisitor.
Ideea a pornit din dorința de a transforma componente electronice standard într-un instrument interactiv, creând o punte între programarea low-level a unui microcontroler și zona creativă a muzicii.
Arhitectura sistemului este formată din trei module principale: * Input: O tastatură matriceală 4×4 citește notele muzicale și comenzile sistemului (ex. schimbare octavă, schimbare efect). Două potențiometre de 10kΩ sunt citite prin convertorul analog-digital (ADC) pentru a ajusta volumul și parametrii efectului activ în timp real. * Procesare: Microcontrolerul ATmega328P orchestrează întregul sistem. Acesta calculează frecvențele notelor, citește inputurile folosind întreruperi pentru a nu bloca generarea sunetului și aplică algoritmii DSP (ex. buffere de delay în RAM pentru reverb, modulație de frecvență prin timer pentru vibrato). * Output: Un buzzer pasiv generează semnalul audio folosind semnale Fast PWM. Un ecran LCD TFT SPI ST7735 oferă feedback vizual utilizatorului, afișând nota curentă, octava curentă și efectul activ.
Listă de componente: * 1 x Arduino Uno (ATmega328P) * 1 x Tastatură matriceală 4×4 * 1 x LCD TFT SPI ST7735 (240×320 pixeli) * 1 x Buzzer pasiv * 2 x Potențiometru 10kΩ (Wiper connected to A0 and A1) * 6 x Rezistor 330Ω (pentru protecție fire date LCD) * 1 x Baterie 9V + clip * Breadboard și fire de legătură
Cablajul sistemului folosește magistrala de SPI hardware a plăcii Arduino Uno pentru ecran și pinii PWM dedicat pentru buzzer.
Conectare Ecran LCD TFT ST7735 (prin rezistoare de 330Ω):
| Pin Ecran | Pin Arduino | Descriere |
|---|---|---|
| VCC | 5V | Alimentare Logică |
| GND | GND | Masă |
| CS | D10 | SPI Chip Select |
| RESET | D3 | Reset Ecran |
| DC | D8 | Data/Command Select |
| SDI (MOSI) | D11 | SPI Master Out Slave In |
| SCK | D13 | SPI Serial Clock |
| LED | 3.3V | Alimentare Lumină Fundal |
| SDO (MISO) | D12 | SPI Master In Slave Out (Touch) |
Conectare Buzzer pasiv: * + → Rezistor 330Ω → D9 (Pin PWM dedicated pentru audio) * - → GND
Biblioteci folosite: * Adafruit GFX: O bibliotecă grafică universală. * Adafruit ST7735: Driver specific pentru cipul ST7735 al ecranului. * SPI: Biblioteca nativă pentru comunicarea hardware rapidă.
Logica software folosește o buclă principală `loop()` care scanează tastatura și citește ADC-ul. Generarea sunetului se face asincron folosind un Timer pentru a nu bloca execuția graficii. Algoritmii DSP sunt implementați în integer-math pentru a maximiza performanța pe procesorul ATmega328P.