Componentes · 6 min de lectura

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.

LED RGB de 5 mm con 4 patas
LED RGB de 5 mm: la pata más larga de las cuatro es la común; las otras tres son los canales rojo, verde y azul.

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

ColorRojoVerdeAzul
Rojo25500
Verde02550
Azul00255
Amarillo2552550
Turquesa (cian)0255255
Morado (magenta)2550255
Naranja255800
Blanco255255255

¿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ísticaCátodo común (CC)Ánodo común (CA)
La pata larga va aGND5V
Para encender un colorPin en HIGH (255)Pin en LOW (0)
Valor en el códigoanalogWrite(pin, valor)analogWrite(pin, 255 - valor)
Totalmente apagado0255
Para saber cuál tienes, conecta la pata larga a GND y toca 5V con otra de las patas a través de una resistencia de 220 Ω. Si el color se enciende, el LED es de cátodo común. Si no, inviértelo: pata larga a 5V y la otra pata a GND a través de la resistencia; si ahora se enciende, es de ánodo común.

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.

PataConexiónPin del Arduino Uno
Rojo (R)A través de una resistenciaD9
Común (la más larga)GND en cátodo común, 5V en ánodo común—
Verde (G)A través de una resistenciaD10
Azul (B)A través de una resistenciaD11

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.

No pongas una sola resistencia en la pata común. El canal rojo, con la tensión directa más baja, se llevará casi toda la corriente, los demás colores quedarán apagados y las mezclas saldrán mal. Cada canal de color necesita su propia resistencia.

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.

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}

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.

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}
Es normal que el blanco se vea algo azulado o rosado, porque los tres LED no brillan igual. Escalando los canales verde y azul al 70–80 % en el código conseguirás un blanco más natural. Poner una pelota de ping-pong o papel esmerilado sobre el LED difumina la luz y mezcla mucho mejor los colores.

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?

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 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:

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 normal o LED direccionable (WS2812B)?

CaracterísticaLED RGB normalWS2812B (NeoPixel)
Pines necesarios3 pines PWM por LED1 pin de datos para toda la tira
Control del colorCon las salidas PWM del ArduinoCon un pequeño chip dentro de cada LED
LibreríaNo hace faltaAdafruit NeoPixel o FastLED
Ideal para1–2 LED, indicadores de estadoTiras, 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.

Ver todos los proyectos
Uso de Led RGB
#39Principiante
Premium

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.

4.9(72)
96
Transición de color suave con Led RGB
#40Principiante
Premium

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.

4.8(58)
76
Control Led RGB con teclado
#95Intermedio
Premium

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.

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

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.

4.6(28)
50
Lámpara con mezclador de colores ESP32 (3 potenciómetros + LED RGB + OLED)
#138Avanzado
Premium

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

4.7(6)
10
Raspberry Pi Pico LED RGB Ciclo de Colores (PWM de 3 Canales, GP11-13)
#161Principiante
Premium

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.

0.0(0)
6
Control de la tira NeoPixel WS2812B con ESP32
#126Intermedio
Premium

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

4.9(19)
30
WS2812B Uso
#69Intermedio
Premium

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

4.8(54)
70

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.

Cómo usar un LED RGB: mezclar colores con Arduino, ánodo común o cátodo común | BlueGrays