🌈 Arduino • LED RGB • PWM

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.

DifficoltàPrincipiante / Intermedia
Pin PWMD9 • D10 • D11
CanaliRosso • Verde • Blu
In poche parole: un LED RGB contiene tre LED in un unico componente. Variando con 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 Arduino

LED RGB utilizzato nel progetto.

Piedinatura LED RGB

Piedinatura di riferimento del LED RGB.

Il programma alterna per circa due secondi rosso, verde, blu, arancione, giallo, indaco e viola.

Materiale necessario

🔌 Arduino Uno
🌈 LED RGB
〰️ 3 resistenze da 220 Ω
🧩 Breadboard
🔗 Cavetti jumper

🧰 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 consigliato

Link 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 Arduino

Link di affiliazione Amazon: in qualità di Affiliato Amazon ricevo un guadagno dagli acquisti idonei, senza alcun costo aggiuntivo per te.

Schema del circuito

Schema Arduino LED RGB

Schema di collegamento del LED RGB con Arduino.

Pin utilizzati

CanalePin ArduinoTipo
RossoD11PWM
VerdeD10PWM
BluD9PWM
Controlla il tipo di LED: il codice è coerente con un LED RGB a catodo comune. Se usi un LED ad anodo comune la logica PWM si inverte: 0 tende alla massima intensità e 255 allo spegnimento del singolo canale.

Codice Arduino commentato

LED RGB – sequenza di colori
// ==========================================================
// 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:

Funzione colore
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.

ColoreRGB
Rosso25500
Verde02550
Blu00255
Arancione2371090
Giallo2552150
Indaco04690
Viola1280128

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.

Concetto chiave: non usare una sola resistenza sul pin comune per “servire” tutti e tre i colori. I tre canali vanno limitati individualmente.

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.

Esempio semplice: dissolvenza dal rosso al blu
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 Tinkercad

Esempio del progetto

Sketch Arduino LED RGB

Scarica lo sketch

⬇️ Scarica lo sketch Arduino

Debug 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.