Stimoliamo la fantasia: controllo di volume con Arduino (E BASTA!) :D

Ciao a tutti

Proprio pochi minuti fa ho fatto una prova e vorrei condividerla, perché ho visto che in giro si trova solo chi lo ha fatto con il tone(). Il bello di questo, invece, è che funziona con segnali audio musicali e mantiene una buona qualità, sicuramente sufficiente per molte applicazioni.

Si tratta di un regolatore di volume a commutazione, in cui non uso una resistenza variabile ma il duty cycle con cui uno o più pin passano da alta impedenza a bassa impedenza. Per avere alta impedenza è sufficiente impostare un pin come ingresso, mentre per avere bassa impedenza (praticamente un corto circuito) basta impostarlo come uscita, senza fare alcun digitalWrite.

In questo esempio commuto l'I/O 8 (bit 0 della porta B) facendo aumentare gradualmente il volume, ma si può fare anche con gli altri pin e anche in versione stereo, commutando due pin contemporaneamente.
Il segnale deve arrivare tramite 4,7...22kOhm ed è bene filtrarlo con 470~1000pF verso massa.
Io ho provato con Arduino Uno, ma si può usare anche un piccolo atTiny.

unsigned long t;
int x;

void setup()
{
DDRB |=1;
}

void loop()
{
if(millis()-t>500) {t=millis(); x+=1;}
if(x==20) x=0;

DDRB &=0; // Alta impedenza (passa)
delayMicroseconds(x);
DDRB |=1; // Bassa impedenza (muto)
delayMicroseconds(0);
}

Versione stereofonica (I/O 8 e 9):

unsigned long t;
int x;

void setup()
{
DDRB |=0b11;
}

void loop()
{
if(millis()-t>500) {t=millis(); x+=1;}
if(x==20) x=0;

DDRB &=~0b11; // Alta impedenza (passa)
delayMicroseconds(x);
DDRB |=0b11; // Bassa impedenza (muto)
delayMicroseconds(0);
}

Sei un mago ! :slight_smile:

Ho solo applicato il PWM a un segnale variabile... :slight_smile:

Adesso non ti resta che fare anche la gestione della distorsione e siamo pronti per il Guitar Show a fine maggio!

Oppure studiamo il pedalSHIELD!

Non ho tirato fuori i simulatori solo perché non posso o troppe applicazioni aperte. Un tempo sta cosa si faceva con un NJFET con il gate NON controllato in PWM ma in continua.

Karma+!