LED RGB con Arduino: colori e dissolvenza PWM
Controlliamo separatamente rosso, verde e blu di un LED RGB usando tre pin PWM di Arduino e creiamo una sequenza di colori personalizzati.
analogWrite() l’intensità dei tre canali possiamo ottenere numerosi colori diversi.Cosa imparerai
- come funziona un LED RGB;
- come controllare tre canali PWM;
- come usare valori RGB da 0 a 255;
- come creare una funzione personalizzata per impostare il colore;
- come combinare rosso, verde e blu;
- come distinguere anodo comune e catodo comune.
Che cos’è un LED RGB
Un LED RGB integra tre sorgenti luminose: rossa, verde e blu. Controllando separatamente l’intensità di ciascun canale possiamo miscelare la luce e ottenere molti colori.
LED RGB utilizzato nel progetto.
Piedinatura di riferimento del LED RGB.
Il programma alterna per circa due secondi rosso, verde, blu, arancione, giallo, indaco e viola.
Materiale necessario
🧰 Kit Arduino consigliato
Molti progetti del sito utilizzano LED, resistenze, breadboard e cavetti. Un kit completo può essere comodo per iniziare.
👉 Guarda il kit Arduino consigliatoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
📘 Vuoi imparare Arduino passo dopo passo?
Se vuoi approfondire e realizzare progetti più completi, puoi dare un’occhiata anche ai miei libri dedicati ad Arduino. All’interno troverai spiegazioni semplici, schemi chiari e molti progetti pratici pensati per chi parte da zero.
👉 Scopri i miei libri su ArduinoLink di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.
Schema del circuito
Schema di collegamento del LED RGB con Arduino.
Pin utilizzati
| Canale | Pin Arduino | Tipo |
|---|---|---|
| Rosso | D11 | PWM |
| Verde | D10 | PWM |
| Blu | D9 | PWM |
Codice Arduino commentato
// ==========================================================
// LED RGB CON ARDUINO
// Controllo dei tre canali tramite PWM
// ==========================================================
// Pin PWM associati ai tre colori
const int pinRosso = 11;
const int pinVerde = 10;
const int pinBlu = 9;
// Funzione che imposta contemporaneamente
// l'intensità dei tre canali.
// Ogni valore può andare da 0 a 255.
void colore(byte rosso, byte verde, byte blu) {
analogWrite(pinRosso, rosso);
analogWrite(pinVerde, verde);
analogWrite(pinBlu, blu);
}
void setup() {
// Configura i tre canali come uscite
pinMode(pinRosso, OUTPUT);
pinMode(pinVerde, OUTPUT);
pinMode(pinBlu, OUTPUT);
}
void loop() {
// Rosso pieno
colore(255, 0, 0);
delay(2000);
// Verde pieno
colore(0, 255, 0);
delay(2000);
// Blu pieno
colore(0, 0, 255);
delay(2000);
// Arancione:
// rosso forte + una parte di verde
colore(237, 109, 0);
delay(2000);
// Giallo:
// rosso + verde
colore(255, 215, 0);
delay(2000);
// Indaco
colore(0, 46, 90);
delay(2000);
// Viola:
// rosso + blu
colore(128, 0, 128);
delay(2000);
// Spegne tutti i canali
colore(0, 0, 0);
delay(2000);
}
Come funziona la funzione colore()
La funzione:
void colore(byte rosso, byte verde, byte blu)
riceve tre valori che rappresentano l’intensità dei canali rosso, verde e blu. Ogni parametro può assumere valori da 0 a 255.
| Colore | R | G | B |
|---|---|---|---|
| Rosso | 255 | 0 | 0 |
| Verde | 0 | 255 | 0 |
| Blu | 0 | 0 | 255 |
| Arancione | 237 | 109 | 0 |
| Giallo | 255 | 215 | 0 |
| Indaco | 0 | 46 | 90 |
| Viola | 128 | 0 | 128 |
Perché servono tre resistenze
Ogni canale interno del LED RGB è un LED distinto e deve avere la propria limitazione di corrente. Per questo nello schema vengono usate tre resistenze, una per rosso, una per verde e una per blu.
Creare una vera dissolvenza tra i colori
La sequenza principale passa da un colore all’altro ogni due secondi con cambi netti. Per ottenere una vera dissolvenza bisogna invece modificare progressivamente i tre valori PWM.
Per ottenere una dissolvenza reale RGB bisogna modificare progressivamente i tre valori PWM.
for (int i = 0; i <= 255; i++) {
// Il rosso diminuisce
int rosso = 255 - i;
// Il blu aumenta
int blu = i;
colore(rosso, 0, blu);
delay(10);
}
Simulazione Tinkercad
▶️ Apri la simulazione TinkercadEsempio del progetto
Scarica lo sketch
⬇️ Scarica lo sketch ArduinoDebug rapido
- controlla quale piedino è il comune del LED RGB;
- verifica se il componente è a catodo comune o anodo comune;
- usa una resistenza per ogni canale;
- controlla che rosso, verde e blu siano realmente collegati a D11, D10 e D9;
- se i colori sono scambiati, verifica la piedinatura del LED;
- se con 255 il canale si spegne, probabilmente stai usando un anodo comune.
Varianti del progetto
- realizzare vere dissolvenze tra colori;
- controllare il colore con tre potenziometri;
- usare un sensore di luce per modificare il colore;
- generare colori casuali;
- controllare RGB da Bluetooth o Wi-Fi;
- creare un effetto “respirazione” multicolore.
Cosa devi ricordare
- Un LED RGB contiene tre LED: rosso, verde e blu.
- I tre canali vengono pilotati sui pin PWM D11, D10 e D9.
- I valori PWM vanno da 0 a 255.
- La funzione
colore()rende il codice più leggibile. - Ogni canale necessita della propria resistenza.
- Il comportamento si inverte se il LED è ad anodo comune.
Domande frequenti
Perché i colori risultano sbagliati?
La piedinatura dei LED RGB non è sempre identica. Verifica quali terminali corrispondono a rosso, verde, blu e comune.
Posso usare un LED RGB ad anodo comune?
Sì, ma devi invertire i valori PWM, ad esempio usando 255 - valore per ogni canale.
Il codice crea una vera dissolvenza?
La sequenza principale cambia colore ogni due secondi. Per una dissolvenza reale devi variare progressivamente i valori PWM.
Posso ottenere qualunque colore?
Puoi ottenere moltissime combinazioni variando i tre canali, anche se il colore percepito dipende dal LED e dalla diversa luminosità dei tre chip interni.

