ESP8266 - LED - Desvanecimiento

Este tutorial te enseña cómo programar el ESP8266 para atenuar un LED. Analizaremos tres ejemplos y compararemos las diferencias entre ellos:

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×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
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.

Buy Note: Use the LED Module for easier wiring. It includes an integrated resistor.

Acerca de LED

La asignación de pines del LED

El LED tiene dos pines:

  • Pin cátodo(-): debe conectarse a GND (0 V)
  • Pin ánodo(+): se usa para controlar el estado del LED
Pinout del LED

Cómo funciona

Una vez que el cátodo(-) haya sido conectado a GND:

  • Conectar GND al ánodo(+) hará que el LED esté apagado.
  • Conectar VCC al ánodo(+) encenderá el LED.
  • Generar una señal PWM al ánodo(+) ajustará el brillo del LED, dependiendo del valor PWM. Este valor puede oscilar desde 0 hasta 255, siendo mayor el valor, más brillante el LED, y menor el valor, más tenue.
  • Si el valor PWM es 0, es lo mismo que conectar GND, por lo que el LED estará apagado.
  • Si el valor PWM es 255, es lo mismo que conectar VCC, por lo que el LED estará completamente encendido.
Cómo funciona un LED

※ Nota:

Para la mayoría de los LEDs, se debe colocar una resistencia entre el ánodo (+) y VCC. El valor de esta resistencia está determinado por las especificaciones del LED.

ESP8266 - Atenuación de LED

Algunos de los pines del ESP8266 pueden programarse para generar una señal PWM. Conectar el pin ánodo (+) del LED a un pin del ESP8266, el cátodo (-) a GND, y programar el pin del ESP8266 para generar PWM, podemos atenuar el LED.

Diagrama de Cableado

Diagrama de cableado del LED 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.

Cómo programar

  • Configura el pin de un ESP8266 en modo de salida digital con la función pinMode(). Como ejemplo, esto se puede hacer para el pin D5:
pinMode(D5, OUTPUT);
  • Ajusta el brillo del LED creando una señal PWM con la función analogWrite().
analogWrite(D5, brightness);

El brillo puede variar entre 0 y 255.

Código ESP8266 - Ejemplo de desvanecimiento desde el IDE de Arduino

Pasos R\u00e1pidos

Para empezar con ESP8266 en el IDE de Arduino, siga estos pasos:

  • Consulta el tutorial cómo configurar el entorno para ESP8266 en Arduino IDE si es la primera vez que usas ESP8266.
  • Conecta los componentes como se muestra en el diagrama.
  • Conecta la placa ESP8266 a tu computadora con un cable USB.
  • Abre Arduino IDE en tu computadora.
  • Elige la placa ESP8266 correcta, como (p. ej. NodeMCU 1.0 (ESP-12E Module)), y su puerto COM respectivo.
  • Conecta la placa ESP8266 a tu computadora con un cable USB.
  • Abre el Arduino IDE y selecciona la placa y el puerto correctos.
  • Copia el código que se muestra a continuación y pégalo en el Arduino IDE.
/* * 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-fade */ #define LED_PIN D5 // The ESP8266 pin connected to the LED int brightness = 0; // how bright the LED is int fade_step = 5; // how many points to fade the LED by // The setup function runs once on reset or power-up void setup() { // Configure the ESP8266 pin as a digital output pin pinMode(LED_PIN, OUTPUT); } // The loop function repeats indefinitely. void loop() { // set the brightness of pin 9: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fade_step; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fade_step = -fade_step; } // wait for 30 milliseconds to see the dimming effect delay(30); }
  • Haz clic en el botón Subir en el IDE de Arduino para compilar y subir el código a la placa ESP8266.
Subir código en el IDE de Arduino
  • Consulta la luminosidad del LED.

Explicación del código

¡Echa un vistazo a la explicación línea por línea que se encuentra en los comentarios del código fuente!

※ Nota:

El ejemplo anterior utiliza la función [delay()] para realizar un fundido de entrada y un fundido de salida. Esto, sin embargo, provoca que el LED se desvanezca de forma irregular y bloquee la ejecución de otros fragmentos del código. En las próximas secciones, aprenderemos a desvanecer de forma suave sin interrumpir el resto del código, utilizando la función [millis()].

Cómo hacer que un LED se encienda gradualmente en un período sin usar delay()

/* * 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-fade */ #define LED_PIN D5 // The ESP8266 pin connected to the LED unsigned long FADE_PEDIOD = 3000; // fade time is 3 seconds unsigned long start_time; // The setup function runs once on reset or power-up void setup() { // Configure the ESP8266 pin as a digital output pin pinMode(LED_PIN, OUTPUT); start_time = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - start_time; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { start_time = millis(); // restart fade again } }

Cómo atenuar un LED durante un periodo sin usar delay()

/* * 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-fade */ #define LED_PIN D5 // The ESP8266 pin connected to the LED unsigned long FADE_PEDIOD = 3000; // fade time is 3 seconds unsigned long start_time; // The setup function runs once on reset or power-up void setup() { // Configure the ESP8266 pin as a digital output pin pinMode(LED_PIN, OUTPUT); start_time = millis(); } // fade-out in loop, and restart after finishing void loop() { unsigned long progress = millis() - start_time; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { start_time = millis(); // restart fade again } }

Video Tutorial

Estamos considerando crear tutoriales en video. Si considera que los tutoriales en video son importantes, suscríbase a nuestro canal de YouTube para motivarnos a crear los videos.

Conocimientos adicionales

  • La función analogWrite() en ESP8266 puede generar una señal PWM, lo que provoca que un LED se atenúe. Sin embargo, si se crea una función personalizada con conocimientos avanzados, puede generar una señal PWM de baja frecuencia, lo que provoca que el LED parpadee en lugar de desvanecerse.
  • En resumen, las señales PWM pueden usarse en ESP8266 para una variedad de propósitos, como controlar servomotores, motores DC, hacer sonido con un zumbador piezoeléctrico, desvanecer LEDs y parpadear los LEDs.

Referencias de Funciones

※ 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!