In questo tutorial realizzerai un semplice dispositivo dimmer per controllare attraverso un potenziometro la luminosità di un LED.
In particolare vedrai come sia possibile leggere un valore da un sensore di tipo analogico e codificare l’informazione analogica all’interno di un segnale PWM che a sua volta pilota un attuatore che mostra un comportamento analogico corrispondente.
Nella figura è riportato il circuito del prototipo mostrato nel video.

Il circuito ha due distinte e separate sezioni.
Da un lato la lettura del sensore (il potenziometro) e dall’altro il pilotaggio di un attuatore (il LED).
Tra le due sezioni abbiamo il nostro microcontrollore Arduino che interpreta le informazioni e le traduce in azioni.
Il codice dello sketch illustrato nel video è il seguente.
void setup() {
// inizializzo la comunicazione seriale
Serial.begin(9600);
// imposto il PIN 9 in modo OUTPUT
pinMode(9, OUTPUT);
}
void loop() {
// leggo un valore dal potenziometro
// e lo visualizzo sul terminale
int val = analogRead(A0);
Serial.print("Valore letto dal potenziometro: ");
Serial.println(val);
// scalo il valore letto nel nuovo intervallo
// e lo visualizzo sul terminale
val = map(val,0,1024,0,255);
Serial.print("Valore trasformato nell'intervallo 0-255: ");
Serial.println(val);
// Effettuo l'output PWM
analogWrite(9,val);
// breve intervallo
delay(200);
}
L’unica istruzione nuova introdotta in questo tutorial è la funzione map, estremamente comoda per ‘mappare‘ un intervallo in un altro intervallo di ampiezza diversa, in modo perfettamente proporzionale.
Nel nostro caso, l’intervallo 0 – 1024 viene mappato nell’intervallo 0 – 255.
Puoi usare la funzione map anche per trasformare un intervallo di ampiezza ridotta in un intervallo di ampiezza maggiore.