Componenti · 6 min di lettura

Come usare un LED RGB: mescolare i colori con Arduino, anodo o catodo comune

Come funziona un LED RGB e come si distingue il catodo comune dall'anodo comune? Collegamento ad Arduino, resistenza per ogni colore, miscelazione con analogWrite, effetto arcobaleno, codice per ESP32 e Pico.

Un LED RGB è formato da tre LED distinti in un unico involucro: rosso (Red), verde (Green) e blu (Blue). Regolando la luminosità di ciascuno separatamente puoi ottenere quasi qualsiasi colore, dal giallo al turchese e dal viola all'arancione. Ogni pixel di uno schermo funziona allo stesso modo. È uno dei componenti Arduino più divertenti per luci di stato, lampade d'atmosfera e indicatori di notifica colorati.

LED RGB da 5 mm a 4 piedini
LED RGB da 5 mm: il più lungo dei quattro piedini è il comune; gli altri tre sono i canali rosso, verde e blu.

Come funziona un LED RGB?

I colori della luce si mescolano sommandosi: rosso e verde insieme appaiono gialli, verde e blu danno il turchese (ciano), rosso e blu il viola (magenta), e tutti e tre insieme il bianco. Arduino regola la luminosità di ogni canale da 0 a 255 con il PWM. In teoria si ottengono così 256 × 256 × 256 ≈ 16,7 milioni di combinazioni. Il PWM accende e spegne il LED centinaia di volte al secondo; l'occhio non vede lo sfarfallio e percepisce solo la luminosità media.

ColoreRossoVerdeBlu
Rosso25500
Verde02550
Blu00255
Giallo2552550
Turchese (ciano)0255255
Viola (magenta)2550255
Arancione255800
Bianco255255255

Catodo comune o anodo comune?

Il più lungo dei quattro piedini è il terminale comune condiviso dai tre LED. Se collega i loro catodi, il LED è a catodo comune; se collega i loro anodi, è ad anodo comune. Dall'esterno sono identici, ma collegamento e codice sono opposti:

CaratteristicaCatodo comune (CC)Anodo comune (CA)
Il piedino lungo va aGND5V
Per accendere un colorePin a HIGH (255)Pin a LOW (0)
Valore nel codiceanalogWrite(pin, valore)analogWrite(pin, 255 - valore)
Completamente spento0255
Per capire quale hai, collega il piedino lungo a GND e tocca il 5V con un altro piedino attraverso una resistenza da 220 Ω. Se il colore si accende, il LED è a catodo comune. Se no, inverti: piedino lungo al 5V e l'altro piedino a GND attraverso la resistenza; se ora si accende, è ad anodo comune.

Ordine dei piedini e collegamento ad Arduino

Nei comuni LED RGB da 5 mm l'ordine è rosso, comune (il più lungo), verde, blu, ma può cambiare a seconda del produttore, quindi la cosa più sicura è provare ogni piedino. Ogni colore si collega con la propria resistenza a un pin PWM. Su Arduino Uno sono i pin contrassegnati con ~: 3, 5, 6, 9, 10 e 11.

PiedinoCollegamentoPin di Arduino Uno
Rosso (R)Tramite una resistenzaD9
Comune (il più lungo)GND per catodo comune, 5V per anodo comune—
Verde (G)Tramite una resistenzaD10
Blu (B)Tramite una resistenzaD11

Calcolo delle resistenze: una per ogni colore

Ogni colore ha bisogno di una tensione diversa per accendersi (tensione diretta): circa 2,0 V il rosso e 3,0–3,2 V il verde e il blu. Puntando a 20 mA a 5 V, il rosso richiede (5 − 2,0) / 0,020 = 150 Ω, il verde e il blu (5 − 3,2) / 0,020 ≈ 100 Ω. In pratica mettere 220 Ω su tutti e tre è sicuro e abbastanza luminoso; il bilanciamento dei colori si regola nel codice. Per calcolare i tuoi valori usa il calcolatore Resistenza per LED, e per la tensione diretta di ogni colore la tabella Tensioni dei LED.

Non mettere una sola resistenza sul piedino comune. Il canale rosso, con la tensione diretta più bassa, prenderebbe quasi tutta la corrente, gli altri colori resterebbero deboli e le miscele verrebbero sbagliate. Ogni canale di colore ha bisogno della propria resistenza.

Mescolare i colori con Arduino

Il codice qui sotto raccoglie i tre canali in un'unica funzione setColor() e mostra sette colori uno dopo l'altro. Se il tuo LED è ad anodo comune, basta impostare COMMON_ANODE a true; la funzione inverte i valori da sola.

Arduino (C++)
1const int R_PIN = 9;
2const int G_PIN = 10;
3const int B_PIN = 11;
4const bool COMMON_ANODE = false;   // ortak anotsa true yap / set true for common anode
5
6void setColor(int r, int g, int b) {
7  if (COMMON_ANODE) { r = 255 - r; g = 255 - g; b = 255 - b; }
8  analogWrite(R_PIN, r);
9  analogWrite(G_PIN, g);
10  analogWrite(B_PIN, b);
11}
12
13void setup() {
14  pinMode(R_PIN, OUTPUT);
15  pinMode(G_PIN, OUTPUT);
16  pinMode(B_PIN, OUTPUT);
17}
18
19void loop() {
20  setColor(255, 0, 0);     delay(1000);  // kırmızı / red
21  setColor(0, 255, 0);     delay(1000);  // yeşil / green
22  setColor(0, 0, 255);     delay(1000);  // mavi / blue
23  setColor(255, 255, 0);   delay(1000);  // sarı / yellow
24  setColor(0, 255, 255);   delay(1000);  // turkuaz / cyan
25  setColor(255, 0, 255);   delay(1000);  // mor / magenta
26  setColor(255, 255, 255); delay(1000);  // beyaz / white
27}

Transizione morbida dei colori: effetto arcobaleno

Invece di saltare da un colore all'altro, se abbassi un canale mentre ne alzi un altro, la luce scorre dolcemente dal rosso al verde, dal verde al blu e di nuovo al rosso. Il ciclo qui sotto usa la stessa funzione setColor(); cambia il valore di delay per regolare la velocità.

Arduino (C++)
1// setColor() ve pin tanımları yukarıdaki gibi / setColor() and pins as above
2void loop() {
3  for (int i = 0; i < 256; i++) { setColor(255 - i, i, 0); delay(8); }  // kırmızı → yeşil / red → green
4  for (int i = 0; i < 256; i++) { setColor(0, 255 - i, i); delay(8); }  // yeşil → mavi / green → blue
5  for (int i = 0; i < 256; i++) { setColor(i, 0, 255 - i); delay(8); }  // mavi → kırmızı / blue → red
6}
È normale che il bianco sembri un po' azzurrino o rosato, perché i tre LED non hanno la stessa luminosità. Riducendo nel codice il verde e il blu al 70–80% ottieni un bianco più naturale. Una pallina da ping-pong o della carta smerigliata sopra il LED diffonde la luce e mescola molto meglio i colori.

Scegliere il colore con i potenziometri

Se colleghi tre potenziometri ad A0, A1 e A2, ognuno diventa la manopola di un canale di colore. analogRead() restituisce un valore da 0 a 1023; dividendolo per 4 ottieni l'intervallo 0–255 che il PWM si aspetta. Il collegamento di un potenziometro è spiegato in Cos'è un potenziometro?

Arduino (C++)
1// A0, A1, A2'de üç potansiyometre; setColor() yukarıdaki gibi
2// three pots on A0, A1, A2; setColor() as above
3void loop() {
4  int r = analogRead(A0) / 4;   // 0–1023 → 0–255
5  int g = analogRead(A1) / 4;
6  int b = analogRead(A2) / 4;
7  setColor(r, g, b);
8}

LED RGB con ESP32 e Raspberry Pi Pico

Sull'ESP32, con il core Arduino attuale (3.x), analogWrite() funziona su qualsiasi pin di uscita, quindi il codice sopra funziona così com'è cambiando i numeri dei pin. L'unica cosa a cui fare attenzione è la tensione: i pin danno 3,3 V, perciò il verde e il blu, con una tensione diretta vicina ai 3 V, sono più deboli. A 3,3 V usa resistenze piccole, da 47–100 Ω, oppure pilota il LED a 5 V tramite un transistor se vuoi molta luce. Sul Pico la classe PWM di MicroPython accetta valori da 0 a 65535:

MicroPython
1from machine import Pin, PWM
2import time
3
4pins = [PWM(Pin(n)) for n in (11, 12, 13)]   # GP11 R, GP12 G, GP13 B
5for p in pins:
6    p.freq(1000)
7
8def set_color(r, g, b):                       # 0–255
9    for p, v in zip(pins, (r, g, b)):
10        p.duty_u16(v * 257)                   # 0–65535 (ortak anotta 65535 - v * 257)
11
12while True:
13    set_color(255, 0, 0); time.sleep(1)       # kırmızı / red
14    set_color(0, 255, 0); time.sleep(1)       # yeşil / green
15    set_color(0, 0, 255); time.sleep(1)       # mavi / blue

LED RGB normale o LED indirizzabile (WS2812B)?

CaratteristicaLED RGB normaleWS2812B (NeoPixel)
Pin necessari3 pin PWM per ogni LED1 pin dati per tutta la striscia
Controllo del coloreCon le uscite PWM di ArduinoCon un minuscolo chip dentro ogni LED
LibreriaNon serveAdafruit NeoPixel o FastLED
Ideale per1–2 LED, indicatori di statoStrisce, anelli, matrici, luci d'atmosfera

Per una o due luci colorate, il LED RGB normale è la soluzione più semplice ed economica. Se vuoi colorare decine di LED singolarmente, i 6 pin PWM dell'Uno non bastano; a quel punto conviene passare alle strisce WS2812B, che controllano centinaia di LED con un solo filo.

Idee di progetti con il LED RGB

  • Lampada d'atmosfera: metti l'effetto arcobaleno dentro un barattolo smerigliato per una luce notturna morbida.
  • Indicatore di temperatura: abbinalo a un DHT11 per una lampada blu quando fa freddo, verde quando è mite e rossa quando fa caldo.
  • Miscelatore di colori: crea qualsiasi colore a mano con tre potenziometri.
  • Scegliere il colore dal telefono: cambia il colore della lampada da un selettore su una pagina web servita da un ESP32.
  • Luce di notifica: fai lampeggiare il LED di un certo colore quando arriva una nuova email o un messaggio.
  • Colori da tastierino: mostra un colore diverso in base al numero digitato su un tastierino.

Errori comuni e come risolverli

  • I colori funzionano al contrario: stai pilotando un LED ad anodo comune come se fosse a catodo comune; imposta COMMON_ANODE a true.
  • Un colore non si accende mai: l'ordine dei piedini potrebbe essere diverso da quello previsto; prova ogni piedino con una resistenza.
  • Le transizioni vanno a scatti, senza sfumature: il LED è su un pin senza PWM; sull'Uno quei pin possono solo essere accesi o spenti.
  • I colori impazziscono mentre suona un buzzer: sull'Uno tone() usa il Timer2 e disturba il PWM dei pin 3 e 11; sposta il LED RGB su pin come 5, 6, 9 e 10.
  • Non usare resistenze: troppa corrente col tempo danneggia sia il LED sia il pin di Arduino.
  • Molto debole sull'ESP32: a 3,3 V il verde e il blu sono al limite; usa resistenze più piccole o un transistor.

Se vuoi capire le basi dei LED e perché servono le resistenze, dai un'occhiata a Cos'è un LED? e Cos'è una resistenza? Nell'app BlueGrays trovi progetti di sfumatura colori con LED RGB, lampada comandata da tastierino e miscelatore di colori, con schemi e codice.

Domande frequenti

Come capisco se il mio LED RGB è ad anodo comune o a catodo comune?

Collega il piedino lungo a GND e tocca il 5V con un altro piedino tramite 220 Ω; se si accende, è a catodo comune. Se no, collega il piedino lungo al 5V e l'altro piedino a GND tramite la resistenza; se ora si accende, è ad anodo comune. Anche la prova diodi di un multimetro funziona.

Che resistenza serve per un LED RGB?

A 5 V l'ideale è circa 150 Ω per il rosso e circa 100 Ω per il verde e il blu. Per semplicità, 220 Ω su tutti e tre è sicuro e dà comunque abbastanza luce. Una resistenza per ogni colore è obbligatoria.

Quanti colori può produrre un LED RGB?

Ogni canale ha 256 livelli di luminosità, da 0 a 255, quindi in teoria ci sono 16,7 milioni di combinazioni. In pratica l'occhio distingue meno colori e le differenze di luminosità tra i LED avvicinano alcune tonalità.

Perché il mio LED RGB sembra azzurrino invece che bianco?

I tre LED hanno luminosità diverse e l'occhio non è ugualmente sensibile a tutti i colori; di solito prevalgono il blu e il verde. Abbassa un po' questi due canali nel codice, o usa resistenze più grandi su di essi, per un bianco più neutro.

Cosa succede se collego un LED RGB a un pin senza PWM?

Quel canale funzionerà solo tutto acceso o tutto spento; analogWrite considera acceso da 128 in su e spento sotto. Se tutti e tre i canali sono così, avrai solo 8 colori base e nessuna transizione morbida.

Quanti LED RGB può controllare un Arduino Uno?

L'Uno ha 6 pin PWM, quindi puoi pilotare al massimo 2 LED RGB con colori indipendenti. Per averne di più usa un driver PWM a 16 canali come il PCA9685, oppure strisce WS2812B che controllano centinaia di LED con un solo pin.

Vedi tutti i progetti
Utilizzo dei LED RGB
#39Principiante
Premium

Utilizzo dei LED RGB

Progetto di base che fa lampeggiare in sequenza i colori rosso, verde e blu del LED RGB. Insegna il controllo dei LED RGB a catodo comune.

4.9(72)
96
Transizione cromatica omogenea con LED RGB
#40Principiante
Premium

Transizione cromatica omogenea con LED RGB

Progetto che crea un morbido effetto arcobaleno commutando gradualmente i colori del LED RGB con analogWrite. Insegna la logica della miscelazione dei colori e l'animazione di transizione con PWM.

4.8(58)
76
Controllo LED RGB con tastierino
#95Intermedio
Premium

Controllo LED RGB con tastierino

Questo progetto consente di gestire il LED RGB tra modalità e colori tramite la tastiera 4x4. Grazie alla struttura millis(), i comandi vengono elaborati senza ritardi. 🎮 Guida all'uso: Tasto A: Velocità fissa Effetto dissolvenza. Tasto B: transizione graduale con velocità regolabile. C / D: Aumenta / Diminuisce la velocità dell'effetto. 1 - 9: Selezione rapida del colore master. * / #: Colori intermedi speciali (rosa, verde chiaro, ecc.). Tasto 0: spegne il sistema.

5.0(32)
44
Controllo LED RGB ESP32
#111Principiante
Premium

Controllo LED RGB ESP32

Generazione illimitata di colori con un singolo LED RGB invece di 3 LED separati. La transizione arcobaleno avviene impostando i valori R/G/B con analogWrite() come in Arduino. La teoria dei colori (come rosso+verde=giallo) viene vista in pratica.

4.6(28)
50
Lampada con miscelatore di colori ESP32 (3 potenziometri + LED RGB + OLED)
#138Avanzato
Premium

Lampada con miscelatore di colori ESP32 (3 potenziometri + LED RGB + OLED)

Una lampada mista colori intelligente che, ruotando i 3 potenziometri con l'ESP32, permette di miscelare il colore desiderato! Man mano che si ruotano i potenziometri rosso, verde e blu, il LED RGB a catodo comune cambia colore istantaneamente. Sul display OLED SSD1306 vengono visualizzati in tempo reale i valori compresi tra 0 e 255 per ogni colore, le barre di riempimento visive e il codice colore HEX (#FF8040, ad esempio). Un mini studio di colore professionale: insegna la teoria dei colori R

4.7(6)
10
Raspberry Pi Pico LED RGB Ciclo di Colori (PWM a 3 Canali, GP11-13)
#161Principiante
Premium

Raspberry Pi Pico LED RGB Ciclo di Colori (PWM a 3 Canali, GP11-13)

Un LED, milioni di colori! 🌈 Un LED RGB contiene 3 LED: rosso, verde e blu. Con un canale PWM del Pico per ciascuno, i colori si mescolano: rosso + verde = giallo, verde + blu = ciano, tutti e tre = bianco. Il LED scorre 8 colori. Impara più canali PWM, funzioni (def), miscelazione RGB, conversione da 8 a 16 bit (x257) e catodo comune vs anodo comune.

0.0(0)
6
Controllo della striscia LED NeoPixel WS2812B con ESP32
#126Intermedio
Premium

Controllo della striscia LED NeoPixel WS2812B con ESP32

I LED indirizzabili WS2812B (NeoPixel) sono LED RGB intelligenti che possono essere controllati in cascata tramite un unico pin dati. In questo progetto controlleremo una striscia WS2812B da 8 LED utilizzando la libreria Adafruit_NeoPixel per creare un'animazione fluida dell'arcobaleno. Sebbene il livello logico a 3,3 V dell'ESP32 funzioni senza problemi con la maggior parte dei componenti WS2812B, in caso di instabilità mostreremo la soluzione con una resistenza in serie da 470 Ω e un condensat

4.9(19)
30
Utilizzo di WS2812B
#69Intermedio
Premium

Utilizzo di WS2812B

Progetto che dimostra l'uso di base della striscia LED indirizzabile WS2812B regolando il colore di ciascun LED in modo indipendente. Insegna il controllo del colore basato su pixel con la libreria Fa

4.8(54)
70

Impara come un LED RGB crea milioni di colori con tre LED in un unico involucro, come distinguere anodo e catodo comune, scegliere le resistenze giuste e sfumare i colori con Arduino.

Come usare un LED RGB: mescolare i colori con Arduino, anodo o catodo comune | BlueGrays