en este tutorial le mostraremos cómo generar señales PWM con el ESP32 usando Arduino IDE. Como ejemplo, construiremos un circuito simple que atenúa un LED Usando el Controlador LED PWM del ESP32. También le mostraremos cómo puede obtener la misma señal PWM en diferentes GPIOs al mismo tiempo.
Antes de continuar con este tutorial, debe tener la ESP32 add-on instalado en tu Arduino IDE., Siga uno de los siguientes tutoriales para instalar el ESP32 en el IDE de Arduino, si aún no lo ha hecho.
- instalación de la placa ESP32 en Arduino IDE (instrucciones de Windows)
- instalación de la placa ESP32 en Arduino IDE (instrucciones de Mac y Linux)
También recomendamos echar un vistazo a los siguientes recursos:
- Introducción al módulo de desarrollo ESP32
- Referencia de Pinout ESP32: ¿qué pines GPIO debe usar?
ver el video Tutorial
Este tutorial está disponible en formato de video (Ver más abajo) y en formato escrito (seguir leyendo).,
partes requeridas
para seguir este tutorial necesita estas partes:
- ESP32 DOIT DEVKIT V1 Board – read best ESP32 development boards
- 3X 5mm LED
- 3x 330 ohm resistor
- Breadboard
- Jumper wires
puede utilizar los enlaces anteriores o ir directamente a MakerAdvisor.com/tools para encontrar todas las piezas para sus proyectos al mejor precio!,
controlador PWM LED ESP32
El ESP32 tiene un controlador PWM LED con 16 canales independientes que se pueden configurar para generar señales PWM con diferentes propiedades.
Estos son los pasos que tendrás que seguir para atenuar un LED con PWM usando el IDE de Arduino:
1. Primero, debe elegir un canal PWM. Hay 16 canales de 0 a 15.
2. Luego, debe configurar la frecuencia de la señal PWM. Para un LED, una frecuencia de 5000 Hz está bien de usar.
3., También necesita establecer la resolución del ciclo de trabajo de la señal: tiene resoluciones de 1 a 16 bits. Usaremos una resolución de 8 bits, lo que significa que puede controlar el brillo del LED utilizando un valor de 0 a 255.
4. A continuación, debe especificar en qué GPIO o GPIOs aparecerá la señal. Para eso usarás la siguiente función:
ledcAttachPin(GPIO, channel)
Esta función Acepta dos argumentos. El primero es el GPIO que emitirá la señal, y el segundo es el canal que generará la señal.
5., Finalmente, para controlar el brillo del LED usando PWM, utiliza la siguiente función:
ledcWrite(channel, dutycycle)
Esta función acepta como argumentos el canal que está generando la señal PWM y el ciclo de trabajo.
atenuación de un LED
veamos un ejemplo simple para ver cómo usar el controlador PWM LED ESP32 usando el IDE Arduino.
Esquemático
conecte un LED a su ESP32 como en el siguiente diagrama esquemático. El LED debe estar conectado a GPIO 16.,
(Este esquema utiliza la versión del módulo esp32 DEVKIT V1 con 30 GPIOs – si está utilizando otro modelo, compruebe el pinout de la placa que está utilizando.)
Nota: puede usar cualquier pin que desee, siempre y cuando pueda actuar como una salida. Todos los pines que pueden actuar como salidas se pueden utilizar como pines PWM. Para obtener más información sobre los GPIOs ESP32, lea: ESP32 Pinout referencia: ¿qué pines GPIO debe usar?
Code
abra su IDE Arduino y copie el siguiente código.,
Ver código raw
empieza definiendo el pin al que está conectado el LED. En este caso, el LED está conectado a GPIO 16.
const int ledPin = 16; // 16 corresponds to GPIO16
a continuación, se establecen las propiedades de la señal PWM. Usted define una frecuencia de 5000 Hz, elige el canal 0 para generar la señal y establece una resolución de 8 bits. Puede elegir otras propiedades, diferentes a estas, para generar diferentes señales PWM.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
en la configuración(), debe configurar LED PWM con las propiedades que ha definido anteriormente mediante el uso de la función ledcSetup() que acepta como argumentos, el canal ledChannel, la frecuencia y la resolución, de la siguiente manera:
ledcSetup(ledChannel, freq, resolution);
a continuación, debe elegir el GPIO del que obtendrá la señal. Para ello usa la función ledcAttachPin() que acepta como argumentos el GPIO donde quieres obtener la señal, y el canal que está generando la señal. En este ejemplo, obtendremos la señal en el LEDPIN GPIO, que corresponde a GPIO 16., El canal que genera la señal es el ledChannel, que corresponde al canal 0.
ledcAttachPin(ledPin, ledChannel);
en el bucle, variará el ciclo de trabajo entre 0 y 255 para aumentar el brillo del LED.
y luego, entre 255 y 0 para disminuir el brillo.
para establecer el brillo del LED, solo necesita usar la función ledcWrite () que acepta como argumentos el canal que está generando la señal y el ciclo de trabajo.
ledcWrite(ledChannel, dutyCycle);
Como estamos utilizando una resolución de 8 bits, el ciclo de trabajo se controlará utilizando un valor de 0 a 255., Tenga en cuenta que en la función ledcWrite() utilizamos el canal que está generando la señal, y no el GPIO.
probando el ejemplo
sube el código a tu ESP32. Asegúrese de que tiene la placa correcta y el puerto COM seleccionado. Mira tu circuito. Usted debe tener un dimmer LED que aumenta y disminuye el brillo.
Recibiendo la Misma Señal en Diferentes GPIOs
Usted puede conseguir la misma señal desde el canal de la misma en diferentes GPIOs., Para lograr eso, solo necesita adjuntar esos GPIOs al mismo canal en la configuración().
Modifiquemos el ejemplo anterior para atenuar 3 ledes usando la misma señal PWM desde el mismo canal.
esquemático
agregue dos LED más a su circuito siguiendo el siguiente diagrama esquemático:
(Este esquema utiliza el ESP32 versión del módulo devkit v1 con 30 GPIOs – si estás usando otro modelo, por favor revisa el pinout de la placa que estás usando.,)
Code
Copie el siguiente código en su IDE Arduino.
Ver código crudo
Este es el mismo código como el anterior pero con algunas modificaciones. Hemos definido dos variables más para dos nuevos Led, que se refieren a GPIO 17 y GPIO 5.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
luego, en la configuración(), hemos agregado las siguientes líneas para asignar ambos GPIOs al canal 0. Esto significa que obtendremos la misma señal, que se está generando en el canal 0, en ambos GPIOs.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
probando el proyecto
sube el nuevo croquis a tu ESP32., Asegúrese de que tiene la placa correcta y el puerto COM seleccionado. Ahora, echar un vistazo a su circuito:
Todos los GPIOs están recibiendo la misma señal PWM. Por lo tanto, los tres LED aumentan y disminuyen el brillo simultáneamente, lo que resulta en un efecto sincronizado.
terminando
En resumen, en este post has aprendido a usar el controlador PWM LED del ESP32 con el IDE Arduino para atenuar led., Los conceptos aprendidos se pueden utilizar para controlar otras salidas con PWM estableciendo las propiedades correctas para la señal.
tenemos otros tutoriales relacionados con ESP32 que también te pueden gustar:
- ESP32 Web Server – Arduino IDE
- ESP32 Data Logging Temperature to MicroSD Card
- ESP32 Web Server con BME280 – Mini Estación Meteorológica
- ESP32 vs ESP8266 – Pros y contras
Este es un extracto de nuestro curso: Aprende ESP32 con Arduino IDE. Si te gusta ESP32 y quieres saber más, te recomendamos inscribirte en el curso Aprende ESP32 con Arduino IDE.