04. ESP32 PWM led

ESP32 PWM led

Ahora que ya sabemos encender un led vamos a aprender a trabajar con ESP32 PWM led, pero que es PWM, PWM es el acrónimo de Pulse Width Modulation (Modulación por ancho de pulso). En caso de que estés igual de confundido, lo voy a explicar de forma analítica con este ejercicio mental.

Ejercicio de ESP32 PWM led

Supongamos que debemos encender un foco (led) de 5 Volts con una intensidad lumínica variable, pero al 50% de su capacidad, pero, solo podemos enviar o 0 Volts o 5 Volts (o sea no podemos enviar 2.5 Volts). Pues ahí entra el PWM porque vamos a jugar con el tiempo y el voltaje enviando la mitad del tiempo 5 Volts y la otra mitad del tiempo 0 Volts generando un efecto de medio encendido como se muestra en este diagrama:

Diagrama de PWM

Como te puedes dar cuenta, mientras más tiempo se manden 5 Volts más fuerte enciende el led y viceversa entre menos tiempo se manden 5 Volts menor es la intensidad.

Diagrama

Para entender más a detalle vamos a crear un código que encienda el led con una intensidad de 0 y que aumente poco a poco 256 y despues que vaya de 256 0 así que vamos a requerir:

Requerimientos:

  • ESP32
  • Un led (Cualquier color)
  • Resistencia de 330 ohms
  • Cables

Conexión:

  • Conectaremos el pin D2 al Ánodo del led.
  • Conectamos una resistencia de 330 Ohms a GND del ESP32 y después al Cátodo del led.

El diagrama de conexión terminará así:

ESP32 PWM led

Codigo

/*
Mira el tutorial en https://www.programadornovato.com/esp32-pwm-led/
*/

// Declaramos la intensidad del brillo del led
int brillo = 0;
// Declaramos el pin que enviara el voltaje
int pinLed=2;
//Características del PWM
const int frecuencia = 1000;
const int canal = 0;
const int resolucion = 10;
void setup()
{
  //Inicializamos las características del pwm
  ledcSetup(canal, frecuencia, resolucion);
  // Definimos que el pin 2 sacara el voltaje
  ledcAttachPin(pinLed, OUTPUT);
}
void loop()
{
  // Incrementamos el brillo de 0 a 256
  for (brillo = 0; brillo <= 256; brillo += 1) {
    //Encendemos el pinLed con la intensidad del brillo
    ledcWrite(pinLed, brillo);
    //Esperamos 15 milisegundos
    delay(15); 
  }
  // Decrementamos el brillo de 0 a 256
  for (brillo = 256; brillo >= 0; brillo -= 1) {
    //Encendemos el pinLed con la intensidad del brillo
    ledcWrite(pinLed, brillo);
    //Esperamos 15 milisegundos
    delay(15); 
  }
}

Ahora veremos como se mira simulando en wokwi.com

ESP32 PWM led

Podemos descargar el código y ver la simulación aquí: https://wokwi.com/projects/342126250860479060

Siguiente tutorial >>

Los comentarios están cerrados.

Salir de la versión móvil