6.5 Degradado de Color¶
¿Estás listo para experimentar un mundo de color? Este proyecto te llevará en un viaje mágico donde podrás controlar un LED RGB y lograr transiciones suaves de color. Ya sea que busques añadir algo de color a tu decoración del hogar o buscando un proyecto de programación divertido, este proyecto lo tiene todo. ¡Sumérgete juntos en este mundo colorido!
Componentes Necesarios
Para este proyecto, necesitamos los siguientes componentes.
Es definitivamente conveniente comprar un kit completo, aquí está el enlace:
Nombre |
ELEMENTOS EN ESTE KIT |
ENLACE |
---|---|---|
Kit de Inicio ESP32 |
320+ |
También puedes comprarlos por separado en los enlaces a continuación.
INTRODUCCIÓN DE COMPONENTES |
ENLACE DE COMPRA |
---|---|
- |
|
Esquemático
Cableado
El LED RGB tiene 4 pines: el pin largo es el pin cátodo común, que generalmente se conecta a GND; el pin izquierdo al lado del pin más largo es Rojo; y los dos pines a la derecha son Verde y Azul.
Código
Nota
Puedes abrir el archivo
6.5_color_gradient.ino
bajo la ruta deesp32-starter-kit-main\c\codes\6.5_color_gradient
.Después de seleccionar la placa (ESP32 Dev Module) y el puerto apropiado, haz clic en el botón Subir.
Este proyecto utiliza un LED RGB y un potenciómetro para crear un efecto de mezcla de colores. El potenciómetro se utiliza para ajustar el valor del tono del LED, que luego se convierte en valores RGB utilizando una función de conversión de color. Los valores RGB se utilizan luego para actualizar el color del LED.
¿Cómo funciona?
Este proyecto se basa en el proyecto 2.3 Luz Colorida añadiendo un potenciómetro para ajustar el valor del tono del LED. El valor del tono se convierte a valores RGB utilizando la función HUEtoRGB()
.
En la función loop, lee el valor del potenciómetro y conviértelo a un valor de tono (0-360).
int knobValue = analogRead(KNOB_PIN); float hueValue = (float) knobValue / 4095.0; int hue = (int) (hueValue * 360);
Convierte el valor del tono a valores RGB utilizando la función
HUEtoRGB()
, y actualiza el LED con los nuevos valores de color.int red, green, blue; HUEtoRGB(hue, &red, &green, &blue); setColor(red, green, blue);
La función
setColor()
establece el valor de los canales rojo, verde y azul utilizando la bibliotecaLEDC
.void setColor(int red, int green, int blue) { ledcWrite(redChannel, red); ledcWrite(greenChannel, green); ledcWrite(blueChannel, blue); }
La función
HUEtoRGB
convierte un valor de tono a valores RGB utilizando el modelo de color HSL.void HUEtoRGB(int hue, int* red, int* green, int* blue) { float h = (float) hue / 60.0; float c = 1.0; float x = c * (1.0 - fabs(fmod(h, 2.0) - 1.0)); float r, g, b; if (h < 1.0) { r = c; g = x; b = 0; ...