Tutorial ESP32 34/55 - Gradiente de color con LED RGB y perilla | Kit de aprendizaje IoT ESP32 de SunFounder

Tutorial ESP32 34/55 - Gradiente de color con LED RGB y perilla | Kit de aprendizaje IoT ESP32 de SunFounder

En este tutorial, crearemos un efecto de gradiente de color utilizando un LED RGB que se ajusta según la posición de un potenciómetro (perilla). El proyecto utiliza un microcontrolador ESP32, que ofrece capacidades de Wi-Fi y Bluetooth integradas, lo que lo convierte en una opción versátil para proyectos de IoT. Al girar el potenciómetro, podemos hacer una transición suave entre diferentes colores, demostrando tanto la funcionalidad del LED RGB como la capacidad de leer valores analógicos del potenciómetro.

ESO32-34_-Color-Gradient-principal

Este proyecto es ideal para aprender sobre PWM (Modulación por Ancho de Pulso) y cómo controlar dispositivos analógicos con un microcontrolador. A lo largo de este tutorial, discutiremos los componentes de hardware necesarios, las instrucciones de cableado y proporcionaremos fragmentos de código para ayudarte a implementar el proyecto. Para una explicación más visual, asegúrate de ver el video asociado (en el video a las 02:15).

Hardware Explicado

ESO32-34_-Esquema-de-gradiente-de-color

Los componentes principales utilizados en este proyecto incluyen el microcontrolador ESP32, un LED RGB y un potenciómetro. El ESP32 es un microcontrolador potente que puede manejar diversas tareas, incluida la comunicación inalámbrica, lo que lo hace adecuado para aplicaciones de IoT. El LED RGB consta de tres LED individuales (rojo, verde y azul) que se pueden mezclar para producir una amplia gama de colores. El potenciómetro actúa como un resistor ajustable que proporciona una salida de voltaje variable basada en su posición.

ESP32_pin_rgb

El LED RGB se puede conectar en dos configuraciones: ánodo común o cátodo común. En este proyecto, utilizaremos una configuración de ánodo común, donde todos los ánodos están conectados entre sí a una tensión positiva, lo que nos permite controlar el brillo de cada LED individualmente con PWM. El potenciómetro se conectará a una entrada analógica en el ESP32 para leer su posición y ajustar los valores RGB en consecuencia.

Detalles de la hoja de datos

Fabricante SunFounder
Número de parte LED RGB
Voltaje de lógica/IO 3.3 V
Tensión de suministro 5 V
Corriente de salida (por canal) 20 mA
Corriente pico (por canal) 30 mA
Guía de frecuencia PWM 5 kHz
Umbrales de lógica de entrada 0.3 V (bajo) / 2.7 V (alto)
Caída de tensión / RDS(on)/ saturación 1.8 V (típ.)
Límites térmicos Temperatura de operación: -40°C a +85°C
Paquete Agujero pasante
Notas / variantes Configuración de ánodo común

  • Utiliza una resistencia de 220 Ohmios para cada canal LED para limitar la corriente.
  • Asegúrate de que la tensión de suministro de energía sea la adecuada (5V) para el LED RGB.
  • Conecte el ánodo común a la fuente de voltaje positivo.
  • Utiliza PWM para controlar el brillo de cada color de LED.
  • Ten cuidado con la conexión del potenciómetro para evitar entradas flotantes.
  • Verifica que el ESP32 esté correctamente alimentado antes de cargar el código.

Instrucciones de cableado

Para conectar el LED RGB y el potenciómetro al ESP32, empieza conectando el pin de cátodo común del LED RGB al pin de alimentación de 3.3V en el ESP32. Los pines rojo, verde y azul del LED RGB se conectarán a los pines27,26, y25respectivamente. Asegúrate de colocar una resistencia de 220 Ohmios en serie con cada pin de color del LED para limitar la corriente y proteger el LED.

A continuación, conecta el potenciómetro al ESP32 uniendo el pin izquierdo al pin de alimentación de 3.3V, el pin derecho a tierra y el pin del medio a14en el ESP32. Esta configuración permite que el ESP32 lea la tensión analógica del potenciómetro, que se utilizará para ajustar el color del LED RGB según su posición.

Ejemplos de código y guía paso a paso

En la función de configuración, definimos los pines para el LED RGB y el potenciómetro, así como inicializamos la configuración de PWM. El siguiente fragmento de código muestra cómo configuramos los pines del LED RGB:

const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;

void setup() {
  ledcAttach(redPin, freq, resolution);
  ledcAttach(greenPin, freq, resolution);
  ledcAttach(bluePin, freq, resolution);
}

En este fragmento, definimos los pines para los LEDs rojo, verde y azul, y los conectamos a canales PWM con una frecuencia y resolución definidas.

La función de bucle lee el valor del potenciómetro y lo convierte en un valor de tono, que luego se utiliza para determinar los valores RGB. El siguiente extracto demuestra este proceso:

void loop() {
  int knobValue = analogRead(KNOB_PIN);
  float hueValue = (float)knobValue / 4095.0;
  int hue = (int)(hueValue * 360);
  
  int red, green, blue;
  HUEtoRGB(hue, &red, &green, &blue);
  setColor(red, green, blue);
}

Este código lee el valor analógico del potenciómetro, lo normaliza y calcula el matiz correspondiente. Luego llama a laHUEtoRGBfunción para convertir el matiz en valores RGB, que se pasan a lasetColorfunción para actualizar el LED.

Demostración / Qué esperar

Al completar la conexión y subir el código, deberías poder girar el potenciómetro para cambiar el color del LED RGB de manera suave. A medida que giras la perilla, el LED cambiará a través de varios colores según el valor de matiz calculado a partir de la posición de la perilla. Si el LED no se enciende o se comporta de manera inesperada, revisa la conexión y asegúrate de que el potenciómetro esté conectado correctamente (en el video a las 10:45).

Marcas de tiempo del video

  • 00:00 Inicio
  • 2:11 Introducción al proyecto
  • 4:31 LED RGB
  • 8:18 Color RGB
  • 12:18 Explicación del cableado
  • 17:59 Código de Arduino explicado
  • 24:12 Seleccionando la placa ESP32 y el puerto COM en Arduino IDE
  • 25:54 Demostración

Imágenes

ESP32_rgb_pin
ESP32_rgb_pin
ESP32_RGB_led_wires
ESP32_RGB_led_wires
potentiometer
potentiometer
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-wiring
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-schematic
ESO32-34_-Color-Gradient-main
ESO32-34_-Color-Gradient-main
835-ESP32 Tutorial 34/55- Arduino code for color gradient
Idioma: C++
¡Copiado!

Recursos y referencias

Archivos📁

No hay archivos disponibles.