Cómo usar un LED RGB: mezclar colores con Arduino, ánodo común o cátodo común
¿Cómo funciona un LED RGB y cómo se distingue el cátodo común del ánodo común? Conexión con Arduino, resistencia para cada color, mezcla de colores con analogWrite, efecto arcoíris y código para ESP32 y Pico.
Un LED RGB son tres LED distintos dentro de un mismo encapsulado: rojo (Red), verde (Green) y azul (Blue). Ajustando el brillo de cada uno por separado puedes conseguir casi cualquier color, del amarillo al turquesa y del morado al naranja. Cada píxel de una pantalla funciona igual. Es una de las piezas más divertidas de Arduino para luces de estado, lámparas de ambiente e indicadores de notificaciones de colores.

¿Cómo funciona un LED RGB?
Los colores de la luz se mezclan sumándose: rojo y verde juntos se ven amarillos, verde y azul dan turquesa (cian), rojo y azul dan morado (magenta), y los tres a la vez dan blanco. Arduino ajusta el brillo de cada canal de 0 a 255 mediante PWM. Así salen, en teoría, 256 × 256 × 256 ≈ 16,7 millones de combinaciones. El PWM enciende y apaga el LED cientos de veces por segundo; el ojo no ve ese parpadeo y solo percibe el brillo medio.
| Color | Rojo | Verde | Azul |
|---|---|---|---|
| Rojo | 255 | 0 | 0 |
| Verde | 0 | 255 | 0 |
| Azul | 0 | 0 | 255 |
| Amarillo | 255 | 255 | 0 |
| Turquesa (cian) | 0 | 255 | 255 |
| Morado (magenta) | 255 | 0 | 255 |
| Naranja | 255 | 80 | 0 |
| Blanco | 255 | 255 | 255 |
¿Cátodo común o ánodo común?
La pata más larga de las cuatro es el terminal común que comparten los tres LED. Si une sus cátodos, el LED es de cátodo común; si une sus ánodos, es de ánodo común. Por fuera son idénticos, pero la conexión y el código son opuestos:
| Característica | Cátodo común (CC) | Ánodo común (CA) |
|---|---|---|
| La pata larga va a | GND | 5V |
| Para encender un color | Pin en HIGH (255) | Pin en LOW (0) |
| Valor en el código | analogWrite(pin, valor) | analogWrite(pin, 255 - valor) |
| Totalmente apagado | 0 | 255 |
Orden de las patas y conexión con Arduino
En los LED RGB de 5 mm habituales el orden es rojo, común (la más larga), verde, azul, pero puede cambiar según el fabricante, así que lo más seguro es probar cada pata. Cada color se conecta con su propia resistencia a un pin PWM. En el Arduino Uno los pines PWM son los marcados con ~: 3, 5, 6, 9, 10 y 11.
| Pata | Conexión | Pin del Arduino Uno |
|---|---|---|
| Rojo (R) | A través de una resistencia | D9 |
| Común (la más larga) | GND en cátodo común, 5V en ánodo común | — |
| Verde (G) | A través de una resistencia | D10 |
| Azul (B) | A través de una resistencia | D11 |
Cálculo de resistencias: una para cada color
Cada color necesita una tensión distinta para encenderse (tensión directa): unos 2,0 V el rojo y 3,0–3,2 V el verde y el azul. Buscando 20 mA a 5 V, el rojo necesita (5 − 2,0) / 0,020 = 150 Ω y el verde y el azul (5 − 3,2) / 0,020 ≈ 100 Ω. En la práctica, poner 220 Ω en los tres es seguro y da suficiente brillo; el equilibrio de color se ajusta en el código. Para calcular tus propios valores usa la calculadora Resistencia para LED, y para la tensión directa de cada color, la tabla Tensiones de LED.
Mezclar colores con Arduino
El código siguiente agrupa los tres canales en una sola función setColor() y muestra siete colores seguidos. Si tu LED es de ánodo común, basta con poner COMMON_ANODE a true; la función invierte los valores por ti.
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}Transición suave de colores: efecto arcoíris
En lugar de saltar de un color a otro, si bajas un canal mientras subes otro, la luz pasa suavemente de rojo a verde, de verde a azul y otra vez a rojo. El bucle siguiente usa la misma función setColor(); cambia el valor de delay para ajustar la velocidad.
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}Elegir el color con potenciómetros
Si conectas tres potenciómetros a A0, A1 y A2, cada uno funciona como la rueda de un canal de color. analogRead() devuelve un valor de 0 a 1023; al dividirlo entre 4 obtienes el rango 0–255 que espera el PWM. La conexión de un potenciómetro se explica en ¿Qué es un potenciómetro?
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 el ESP32 y la Raspberry Pi Pico
En el ESP32, con el núcleo actual de Arduino (3.x), analogWrite() funciona en cualquier pin de salida, así que el código anterior sirve tal cual cambiando los números de pin. Lo único que hay que vigilar es la tensión: los pines dan 3,3 V, por lo que el verde y el azul, cuya tensión directa ronda los 3 V, brillan menos. A 3,3 V usa resistencias pequeñas, de 47–100 Ω, o alimenta el LED a 5 V con un transistor si quieres mucho brillo. En la Pico, la clase PWM de MicroPython acepta valores de 0 a 65535:
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 normal o LED direccionable (WS2812B)?
| Característica | LED RGB normal | WS2812B (NeoPixel) |
|---|---|---|
| Pines necesarios | 3 pines PWM por LED | 1 pin de datos para toda la tira |
| Control del color | Con las salidas PWM del Arduino | Con un pequeño chip dentro de cada LED |
| Librería | No hace falta | Adafruit NeoPixel o FastLED |
| Ideal para | 1–2 LED, indicadores de estado | Tiras, anillos, matrices, iluminación ambiental |
Para una o dos luces de color, el LED RGB normal es la solución más sencilla y barata. Si quieres colorear decenas de LED por separado, los 6 pines PWM del Uno no bastan; entonces conviene pasar a tiras WS2812B, que controlan cientos de LED con un solo cable.
Ideas de proyectos con LED RGB
- Lámpara de ambiente: mete el efecto arcoíris dentro de un tarro esmerilado para hacer una luz nocturna suave.
- Indicador de temperatura: combínalo con un DHT11 para una lámpara azul con frío, verde con temperatura agradable y roja con calor.
- Mezclador de colores: crea cualquier color a mano con tres potenciómetros.
- Elegir el color desde el móvil: cambia el color de la lámpara desde un selector de color en una página web servida por un ESP32.
- Luz de notificaciones: haz parpadear el LED en un color concreto cuando llegue un correo o un mensaje.
- Colores con teclado: muestra un color distinto según el número que se teclee en un teclado matricial.
Errores comunes y cómo solucionarlos
- Los colores funcionan al revés: estás manejando un LED de ánodo común como si fuera de cátodo común; pon COMMON_ANODE a true.
- Un color no se enciende nunca: puede que el orden de las patas sea distinto del esperado; prueba cada pata con una resistencia.
- Las transiciones van a saltos, sin tonos intermedios: el LED está en un pin sin PWM; en el Uno esos pines solo pueden estar encendidos o apagados.
- Los colores fallan mientras suena un zumbador: en el Uno, tone() usa el Timer2 y estropea el PWM de los pines 3 y 11; pasa el LED RGB a pines como el 5, 6, 9 y 10.
- No poner resistencias: el exceso de corriente acaba dañando el LED y el pin del Arduino.
- Muy apagado en el ESP32: a 3,3 V el verde y el azul van justos; usa resistencias más pequeñas o un transistor.
Si quieres entender lo básico de los LED y por qué necesitan resistencias, echa un vistazo a ¿Qué es un LED? y ¿Qué es una resistencia? En la app BlueGrays encontrarás proyectos de transición de color con LED RGB, lámpara controlada por teclado y mezclador de colores, con esquemas y código.
Preguntas frecuentes
¿Cómo sé si mi LED RGB es de ánodo común o de cátodo común?
Conecta la pata larga a GND y toca 5V con otra pata a través de 220 Ω; si se enciende, es de cátodo común. Si no, conecta la pata larga a 5V y la otra pata a GND con la resistencia; si ahora se enciende, es de ánodo común. El modo de prueba de diodos de un multímetro también sirve.
¿Qué resistencia lleva un LED RGB?
A 5 V lo ideal es unos 150 Ω para el rojo y unos 100 Ω para el verde y el azul. Por simplicidad, 220 Ω en los tres es seguro y da suficiente brillo. Es obligatorio poner una resistencia para cada color.
¿Cuántos colores puede dar un LED RGB?
Cada canal tiene 256 niveles de brillo, de 0 a 255, así que en teoría hay 16,7 millones de combinaciones. En la práctica el ojo distingue menos colores, y las diferencias de brillo entre los LED acercan algunos tonos entre sí.
¿Por qué mi LED RGB se ve azulado en lugar de blanco?
Los tres LED tienen brillos distintos y el ojo no es igual de sensible a todos los colores; normalmente dominan el azul y el verde. Baja un poco esos dos canales en el código, o ponles resistencias mayores, para lograr un blanco más neutro.
¿Qué pasa si conecto un LED RGB a un pin sin PWM?
Ese canal solo funcionará totalmente encendido o totalmente apagado; analogWrite considera encendido de 128 hacia arriba y apagado por debajo. Si los tres canales están así, solo tendrás 8 colores básicos y ninguna transición suave.
¿Cuántos LED RGB puede controlar un Arduino Uno?
El Uno tiene 6 pines PWM, así que como mucho puedes manejar 2 LED RGB con colores independientes. Para más, usa un controlador PWM de 16 canales como el PCA9685, o tiras WS2812B que controlan cientos de LED con un solo pin.
Proyectos para hacer después de leer esto
Ver todos los proyectos
Uso de Led RGB
Proyecto de uso básico que hace parpadear secuencialmente los colores rojo, verde y azul del LED RGB. Enseña el control del LED RGB de cátodo común.

Transición de color suave con Led RGB
Proyecto que crea un suave efecto arco iris cambiando gradualmente los colores del LED RGB con analogWrite. Enseña la lógica de la mezcla de colores y la animación de transiciones con PWM.

Control Led RGB con teclado
Este proyecto permite manejar el LED RGB entre modos y colores a través del Teclado 4x4. Gracias a la estructura millis(), los comandos se procesan sin retardo. 🎮 Guía del usuario: Tecla A: Velocidad fija Efecto fundido. Tecla B: Transición suave con velocidad ajustable. C / D: Aumenta / Disminuye la velocidad del efecto. 1 - 9: Selección rápida del color maestro. * / #: Colores intermedios especiales (rosa, verde claro, etc.). Tecla 0: Apaga el sistema.

ESP32 RGB LED de control
Generación ilimitada de colores con un solo LED RGB en lugar de 3 LEDs separados. Hacemos transición arco iris estableciendo valores R/G/B con analogWrite() como en Arduino. La teoría del color (como rojo+verde=amarillo) se ve de forma práctica.

Lámpara con mezclador de colores ESP32 (3 potenciómetros + LED RGB + OLED)
¡Una lámpara mezcladora de colores inteligente que combina el color que quieras girando tres potenciómetros con el ESP32! A medida que giras los potenciómetros de rojo, verde y azul, el LED RGB de cátodo común cambia de color al instante. En la pantalla OLED SSD1306 se muestran en tiempo real los valores de cada color en un rango de 0 a 255, barras de relleno visuales y el código de color HEX para la web (como #FF8040). Un miniestudio de color profesional: enseña la teoría del color RGB, la lect

Raspberry Pi Pico LED RGB Ciclo de Colores (PWM de 3 Canales, GP11-13)
¡Un LED, millones de colores! 🌈 Un LED RGB contiene 3 LEDs: rojo, verde y azul. Con un canal PWM del Pico para cada uno, los colores se mezclan: rojo + verde = amarillo, verde + azul = cian, los tres = blanco. El LED recorre 8 colores. Aprende múltiples canales PWM, funciones (def), mezcla RGB, conversión de 8 a 16 bits (x257) y cátodo común vs ánodo común.

Control de la tira NeoPixel WS2812B con ESP32
Los LED direccionables WS2812B (NeoPixel) son LED RGB inteligentes que se pueden controlar en cadena a través de un único pin de datos. En este proyecto, controlaremos una tira de 8 LED WS2812B con la biblioteca Adafruit_NeoPixel para crear una animación fluida de arcoíris. Aunque el nivel lógico de 3,3 V del ESP32 funciona sin problemas en la mayoría de los componentes WS2812B, mostraremos la solución de una resistencia en serie de 470 Ω y un condensador de 1000 µF en caso de inestabilidad. La

WS2812B Uso
Proyecto que demuestra el uso básico de la tira de LED direccionable WS2812B ajustando el color de cada LED de forma independiente. Enseña el control del color basado en píxeles con la librería FastLE
Más artículos
Aprende cómo un LED RGB crea millones de colores con tres LED en un solo encapsulado, cómo distinguir ánodo y cátodo común, elegir las resistencias adecuadas y mezclar colores suavemente con Arduino.

