ESP32 - LED - Fade

Este tutorial ensina como usar:

Sobre o LED

Pinagem do LED

O LED possui dois pinos:

  • Pino Cátodo(-): conecte este pino ao GND (0V)
  • Pino Ânodo(+): é usado para controlar o estado do LED
Pinagem do LED

Como o LED Funciona

Depois de conectar o cátodo(-) ao GND:

  • Se conectarmos o GND ao ânodo(+), o LED fica APAGADO.
  • Se conectarmos o VCC ao ânodo(+), o LED fica ACESO.
  • Se gerarmos um sinal PWM no pino ânodo(+), o brilho do LED é proporcional ao ciclo de trabalho (duty cycle) do PWM. O ciclo de trabalho do PWM varia de 0 a 255. Quanto maior o ciclo de trabalho do PWM, mais brilhante fica o LED.
    • Se o valor do PWM for 0, é equivalente ao GND ⇒ o LED fica APAGADO
    • Se o valor do PWM for 255, é equivalente ao VCC ⇒ o LED fica ACESO no brilho máximo.
    Como o LED funciona

    ※ Nota:

    Normalmente, é necessário um resistor para proteger o LED contra queima. O valor da resistência depende da especificação do LED.

    ESP32 - LED com fade

    Os pinos de saída digital do ESP32 podem ser programados para gerar sinal PWM. Conectando o pino ânodo(+) do LED a um pino do ESP32, o cátodo(-) do LED ao GND e, em seguida, programando o ESP32 para alterar o ciclo de trabalho do PWM, podemos fazer o fade do LED.

Diagrama de Ligação entre LED e ESP32

Diagrama de ligação ESP32 LED

This image is created using Fritzing. Click to enlarge image

Se você não sabe como alimentar o ESP32 e outros componentes, veja as instruções no tutorial a seguir: Como alimentar o ESP32.

Como Programar

  • Configure um pino do ESP32 como pino de saída digital usando a função pinMode(). Por exemplo, o pino GPIO18:
pinMode(18, OUTPUT);
  • Defina o brilho do LED gerando um sinal PWM com o ciclo de trabalho correspondente usando a função analogWrite():
analogWrite(18, brightness);

Onde brightness é um valor de 0 a 255.

Código ESP32 - Exemplo Simples de Fade

Passos Rápidos

  • Se esta é a primeira vez que você usa o ESP32, veja como configurar o ambiente para o ESP32 na Arduino IDE.
  • Faça a ligação conforme a imagem acima.
  • Conecte a placa ESP32 ao seu PC por meio de um cabo USB Type-C
  • Abra a Arduino IDE no seu PC.
  • Selecione a placa ESP32 correta (por exemplo, ESP32 Dev Module) e a porta COM.
  • Copie o código abaixo e cole-o na Arduino IDE.
/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin GPIO18 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin GPIO18: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }
  • Compile e faça upload do código para a placa ESP32 clicando no botão Upload na Arduino IDE
Arduino IDE fazer upload do código
  • Veja o brilho do LED

Explicação do Código Linha por Linha

O código ESP32 acima contém explicação linha por linha. Por favor, leia os comentários no código!

※ Nota:

O exemplo acima usa a função delay() para fazer fade-in e fade-out. A função delay() faz o LED variar de forma não suave e bloqueia outros códigos. Nas próximas partes, vamos aprender a fazer fade-in e fade-out de forma suave, sem bloquear outros códigos, usando a função millis()

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

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

/* * Este código de ESP32 foi desenvolvido por pt.newbiely.com * Este código de ESP32 é disponibilizado ao público sem nenhuma restrição. * Para tutoriais completos e diagramas de ligação, visite: * https://pt.newbiely.com/tutorials/esp32/esp32-led-fade */ #define LED_PIN 18 // ESP32 pin GPIO18 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin GPIO18 to be an output fadeStartTime = millis(); } // fade-out in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Vídeo

Referências da Linguagem

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