ESP8266 - LED - Fade

Este tutorial ensina você a programar o ESP8266 para fazer fade em um LED. Vamos ver três exemplos e comparar as diferenças entre eles:

Hardware Necessário

1×ESP8266 NodeMCU ESP-12F
1×Alternatively, ESP8266 D1 Mini NodeMCU ESP-12F
1×Alternatively, ESP8266 NodeMCU ESP-12E (Uno-form)
1×Micro USB Cable
1×Alternatively, ESP8266 NodeMCU ESP-12F (SMD-form)
1×Cabo USB Tipo-A para Tipo-C (para PC com USB-A)
1×Cabo USB Tipo-C para Tipo-C (para PC com USB-C)
1×LED Kit
1×LED (red)
1×LED Module
1×(Alternativa) Button and LED Kit
1×220Ω Resistor
1×Protoboard
1×Fios Jumper
1×(Recomendado) Placa de Expansão com Bornes de Parafuso para ESP8266

Or you can buy the following kits:

1×DIYables Sensor Kit (18 sensors/displays)
Divulgação: Alguns dos links desta seção são links de afiliado da Amazon. Podemos receber uma comissão pelas compras feitas por meio desses links, sem custo adicional para você. Agradecemos o seu apoio.

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

Sobre o LED

A Pinagem do LED

O LED tem dois pinos:

  • Pino catodo(-): precisa ser conectado ao GND (0V)
  • Pino anodo(+): usado para controlar o estado do LED
Pinagem do LED

Como Funciona

Depois que o catodo(-) estiver conectado ao GND:

  • Conectar o GND ao anodo(+) fará o LED ficar DESLIGADO.
  • Conectar o VCC ao anodo(+) fará o LED LIGAR.
  • Gerar um sinal PWM no anodo(+) ajustará o brilho do LED, de acordo com o valor do PWM. Esse valor pode variar de 0 a 255, e um valor maior deixa o LED mais brilhante, enquanto um valor menor deixa o LED mais fraco.
  • Se o valor do PWM for 0, é o mesmo que conectar o GND, então o LED ficará DESLIGADO.
  • Se o valor do PWM for 255, é o mesmo que conectar o VCC, então o LED ficará totalmente LIGADO.
Como o LED funciona

※ Nota:

Para a maioria dos LEDs, é preciso colocar um resistor entre o anodo (+) e o VCC. O valor desse resistor é determinado pelas especificações do LED.

ESP8266 - fade de LED

Alguns dos pinos do ESP8266 podem ser programados para produzir um sinal PWM. Conectando o pino anodo (+) do LED a um pino do ESP8266, o catodo (-) ao GND, e programando o pino do ESP8266 para gerar PWM, podemos fazer o fade do LED.

Diagrama de Ligação

Diagrama de ligação do LED com ESP8266 NodeMCU

This image is created using Fritzing. Click to enlarge image

Para mais informações, veja Pinagem do ESP8266 e como alimentar o ESP8266 e outros componentes.

Como Programar

  • Configure o pino de um ESP8266 no modo de saída digital com a função pinMode(). Por exemplo, isso pode ser feito para o pino D5:
pinMode(D5, OUTPUT);
  • Ajuste o brilho do LED criando um sinal PWM com a função analogWrite().
analogWrite(D5, brightness);

O brilho pode variar de 0 a 255.

Código ESP8266 - Exemplo de Fade da Arduino IDE

Passos Rápidos

Para começar com o ESP8266 na Arduino IDE, siga estes passos:

  • Veja o tutorial como configurar o ambiente para ESP8266 na Arduino IDE se esta for a sua primeira vez usando o ESP8266.
  • Ligue os componentes como mostrado no diagrama.
  • Conecte a placa ESP8266 ao seu computador usando um cabo USB.
  • Abra a Arduino IDE no seu computador.
  • Escolha a placa ESP8266 correta, como (ex.: NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
  • Conecte o ESP8266 ao seu computador com um cabo USB.
  • Abra a Arduino IDE e selecione a placa e a porta corretas.
  • Copie o código abaixo e cole na Arduino IDE.
/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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); }
  • Clique no botão Upload na Arduino IDE para compilar e fazer o upload do código para a placa ESP8266.
Upload de código na Arduino IDE
  • Observe a luminosidade do LED.

Explicação do Código

Confira a explicação linha por linha contida nos comentários do código-fonte!

※ Nota:

O exemplo acima usa a função delay() para fazer fade-in e fade-out. Isso, porém, faz o LED mudar de brilho de forma irregular e bloqueia a execução de outros códigos. Nas próximas seções, vamos aprender a fazer fade-in e fade-out de forma suave, sem interromper outros códigos, usando a função millis().

Como fazer fade-in de um LED em um período sem usar delay()

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 } }

Como fazer fade-out de um LED em um período sem usar delay()

/* * Este código de ESP8266 NodeMCU foi desenvolvido por pt.newbiely.com * Este código de ESP8266 NodeMCU é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.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 } }

Vídeo

Conhecimento Adicional

  • A função analogWrite() no ESP8266 pode gerar um sinal PWM, que faz o LED fazer fade. No entanto, se uma função personalizada for criada com conhecimento avançado, ela pode gerar um sinal PWM de baixa frequência, fazendo o LED piscar em vez de fazer fade.
  • Em resumo, os sinais PWM podem ser usados no ESP8266 para várias finalidades, como controlar servo motores, motores DC, produzir som com um buzzer piezo, fazer fade em LEDs e piscar LEDs.

Referências de Funções

※ NOSSAS MENSAGENS

  • Fique à vontade para compartilhar o link deste tutorial. Porém, por favor, não use nosso conteúdo em outros sites. Investimos muito esforço e tempo para criar este conteúdo, por favor respeite nosso trabalho!