ESP8266 - LED RGB

Este tutorial te enseña cómo usar el ESP8266 para controlar un LED RGB. En detalle, aprenderemos:

Hardware Requerido

1×ESP8266 NodeMCU
1×Cable USB Tipo-A a Tipo-C (para PC USB-A)
1×Cable USB Tipo-C a Tipo-C (para PC USB-C)
1×RGB LED
3×220 ohm Resistor
1×(Alternativo) Módulo LED RGB
1×Protoboard
1×Cables Puente
1×(Recomendado) Placa de Expansión de Terminales de Tornillo para ESP8266
1×(Recomendado) Divisor de Alimentación para ESP8266 Tipo-C

Or you can buy the following kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
Divulgación: Algunos de los enlaces proporcionados en esta sección son enlaces de afiliado de Amazon. Podemos recibir una comisión por las compras realizadas a través de estos enlaces sin costo adicional para usted. Apreciamos su apoyo.

Acerca de LED RGB

El LED RGB puede producir cualquier color combinando los tres colores primarios: rojo, verde y azul. Está compuesto por tres LEDs distintos (rojo, verde y azul), pero todos contenidos en una única carcasa.

Disposición de pines del LED RGB

Un LED RGB tiene cuatro pines:

  • El pin común (cátodo) debe conectarse a GND (0V)
  • El pin R (rojo) se utiliza para regular el rojo
  • El pin G (verde) se utiliza para regular el verde
  • El pin B (azul) se utiliza para regular el azul
Pinout del LED RGB

Para hacer que un LED RGB funcione con ESP8266, tenemos que agregar resistencias limitadoras de corriente. Eso puede hacer que el cableado sea un poco complicado. ¡Pero oye, hay una solución! Podemos usar un módulo LED RGB que ya trae resistencias integradas. ¡Muy fácil!

El módulo LED RGB también incluye cuatro pines:

  • Pin común (cátodo): debe conectarse a GND (0V)
  • R (rojo): el pin se utiliza para controlar el rojo
  • G (verde): el pin se utiliza para controlar el verde
  • B (azul): el pin se utiliza para controlar el azul
Pinout del módulo LED RGB

※ Nota:

El pin común, que puede ser cátodo o ánodo, puede variar según el tipo de LED RGB. Este tutorial utilizará un pin común de cátodo.

Cómo funciona

En el ámbito de la física, tres valores de color componen un color: Rojo (R), Verde (V) y Azul (A). Cada valor oscila entre 0 y 255. La combinación de los tres valores produce un total de 256 x 256 x 256 colores.

Podemos configurar el LED RGB para que tenga cualquier color que deseemos utilizando el ESP8266 para generar señales PWM (que van de 0 a 255) para los pines R, G y B. El ciclo de trabajo de las señales PWM enviadas a los pines R, G y B es proporcional a los valores de color de Rojo, Verde y Azul, respectivamente.

Diagrama de Cableado

  • Diagrama de cableado entre ESP8266 y LED RGB
Diagrama de cableado LED RGB ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para obtener m\u00e1s informaci\u00f3n, consulte Pines del ESP8266 y c\u00f3mo alimentar ESP8266 y otros componentes.

  • Diagrama de cableado entre ESP8266 y el módulo LED RGB
Esquema de cableado del módulo LED RGB ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Cómo controlar un LED RGB

Vamos a aprender a controlar el LED GRB para obtener cualquier color, por ejemplo #00979D paso a paso:

  • En primer lugar, determina qué color quieres mostrar y obtén su código de color. Consejos:
  • Luego, convierte el código de color a valores R, G, B usando la herramienta de W3Schools. Toma nota de estos valores. En este caso: R = 0, G = 151, B = 157
Selector de color RGB para LED
  • Especificar los pines del ESP8266 que se conectan a los pines R, G y B. Por ejemplo:
const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7;
  • Configura los siguientes pines del ESP8266 en modo de salida:
pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT);
  • Controla el LED para emitir el color de #00979D, que está compuesto por Rojo = 0, Verde = 151 y Azul = 157.
analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 151); analogWrite(PIN_BLUE, 157);

ESP8266 - Código de ejemplo para LED RGB

El código ESP8266 a continuación cambia el color del LED en una secuencia de:

  • #00C9CC (Rojo = 0, Verde = 201, Azul = 204)
  • #F7788A (Rojo = 247, Verde = 120, Azul = 138)
  • #34A853 (Rojo = 52, Verde = 168, Azul = 83)
/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-led-rgb */ const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7; void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // color code #00C9CC (R = 0, G = 201, B = 204) analogWrite(PIN_RED, 0); analogWrite(PIN_GREEN, 201); analogWrite(PIN_BLUE, 204); delay(1000); // keep the color 1 second // color code #F7788A (R = 247, G = 120, B = 138) analogWrite(PIN_RED, 247); analogWrite(PIN_GREEN, 120); analogWrite(PIN_BLUE, 138); delay(1000); // keep the color 1 second // color code #34A853 (R = 52, G = 168, B = 83) analogWrite(PIN_RED, 52); analogWrite(PIN_GREEN, 168); analogWrite(PIN_BLUE, 83); delay(1000); // keep the color 1 second }

Al usar muchos colores, podríamos acortar el código del ESP8266 creando una función:

/* * Este código de ESP8266 NodeMCU fue desarrollado por es.newbiely.com * Este código de ESP8266 NodeMCU se proporciona al público sin ninguna restricción. * Para tutoriales completos y diagramas de cableado, visite: * https://es.newbiely.com/tutorials/esp8266/esp8266-led-rgb */ const int PIN_RED = 5; const int PIN_GREEN = 6; const int PIN_BLUE = 7; void setup() { pinMode(PIN_RED, OUTPUT); pinMode(PIN_GREEN, OUTPUT); pinMode(PIN_BLUE, OUTPUT); } void loop() { // color code #00C9CC (R = 0, G = 201, B = 204) setColor(0, 201, 204); delay(1000); // keep the color 1 second // color code #F7788A (R = 247, G = 120, B = 138) setColor(247, 120, 138); delay(1000); // keep the color 1 second // color code #34A853 (R = 52, G = 168, B = 83) setColor(52, 168, 83); delay(1000); // keep the color 1 second } void setColor(int R, int G, int B) { analogWrite(PIN_RED, R); analogWrite(PIN_GREEN, G); analogWrite(PIN_BLUE, B); }

Conocimiento adicional

Para un LED RGB con ánodo común, necesitas:

  • Conecta el pin común a 3,3 V del ESP8266.
  • Invierte los valores R, G y B en la función analogWrite(), es decir, usa 255 - R, 255 - G y 255 - B, respectivamente

Una secuencia de LEDs RGB conectados entre sí forma una tira de LEDs RGB. Las tiras de LEDs pueden dividirse en tiras de LEDs direccionables y tiras de LEDs no direccionables. Crearemos tutoriales para ambos tipos de tiras de LEDs.

※ Nota:

No use una sola resistencia en el pin común de un LED RGB en lugar de tres resistencias en los demás pines. Esto se debe a que, aunque en teoría es válido usar una sola resistencia en el pin común, en la práctica no es así. Los LEDs en un paquete RGB no son idénticos, lo que significa que sus resistencias son diferentes. Como resultado, la corriente se distribuye de manera desigual a cada LED, haciendo que el brillo sea desigual, lo que puede llevar a la destrucción de uno o más LEDs, y, con el tiempo, de los demás LEDs.

※ NUESTROS MENSAJES

  • No dude en compartir el enlace de este tutorial. Sin embargo, por favor no use nuestro contenido en otros sitios web. Hemos invertido mucho esfuerzo y tiempo en crear el contenido, ¡por favor respete nuestro trabajo!