Sobre este tutorial:
Noções básicas do ESP32
1. Introdução ao ESP32
2. ESP32 Arduino Ambiente de Desenvolvimento Integrado
3. Código VS e PlataformaIO
4. Pinos ESP32
5. Entrada e saída do ESP32
6. Modulação de largura de pulso ESP32 ☑
7. Entrada analógica do ESP32
8. Temporizador de interrupção do ESP32
9 .ESP32 sono profundo
Protocolo ESP32
servidor web ESP32
ESP32 LoRa
ESP32 BLE
ESP32 BLE Cliente-Servidor
ESP32Bluetooth
ESP32 MQTT
ESP32 ESP-NOW
ESP32 wi-fi
ESP32 WebSocket
ESP32 ESP-MESH
caixa de correio ESP32
ESP32 SMS
ESP32 HTTP obter POST
HTTP GET Web APIs
APIs da Web HTTP POST
Artigos do servidor ESP32
Continue se atualizando, siga os blogueiros e não se perca! ! !
Módulo Sensor ESP32
Continue se atualizando, siga os blogueiros e não se perca! ! !
ESP32 Ultimate Combat
Mais de 100 projetos práticos do ESP32, preste atenção! ! !
Neste tutorial, mostraremos como gerar sinal PWM com ESP32 usando o Arduino IDE. Como exemplo, vamos construir um circuito simples para dimerizar um LED usando o controlador LED PWM do ESP32. Também mostraremos como obter o mesmo sinal PWM simultaneamente em diferentes GPIOs.
Antes de continuar com este tutorial, você deve ter o complemento ESP32 instalado no Arduino IDE. Caso ainda não tenha o ESP32 instalado, siga um dos tutoriais abaixo para instalá-lo na IDE do Arduino.
peças necessárias
Para seguir este tutorial, você precisará destas peças:
Placa ESP32 DOIT DEVKIT V1
3 LEDs de 5 mm
3 resistores de 330 ohm
Breadboard
Jumper wires
Controlador ESP32 LED PWM
O ESP32 possui um controlador LED PWM com 16 canais independentes que podem ser configurados para gerar sinais PWM com diferentes propriedades.
Aqui estão os passos que você deve seguir para escurecer um LED usando PWM usando o Arduino IDE:
1. Primeiro, você precisa selecionar um canal PWM. São 16 canais de 0 a 15.
2. Em seguida, você precisa definir a frequência do sinal PWM. Para LEDs, uma frequência de 5000 Hz pode ser usada.
3. Você também precisa definir a resolução do ciclo de trabalho do sinal: a resolução é de 1 a 16 bits. Estaremos usando resolução de 8 bits, o que significa que você pode usar um valor entre 0 e 255 para controlar o brilho do LED.
4. Em seguida, você precisa especificar em qual GPIO ou GPIOs o sinal aparecerá. Para isso, você usará a seguinte função:
ledcAttachPin(GPIO, channel)
Esta função aceita dois parâmetros. O primeiro é o GPIO que enviará o sinal e o segundo é o canal que gerará o sinal.
5. Finalmente, para controlar o brilho do LED usando PWM, use a seguinte função:
ledcWrite(channel, dutycycle)
Esta função aceita como parâmetros o canal e o ciclo de trabalho para gerar o sinal PWM.
Diminua o LED
Vejamos um exemplo simples para ver como usar o controlador ESP32 LED PWM usando o Arduino IDE.
diagrama esquemático
Conecte o LED ao ESP32 conforme a figura abaixo. O LED deve ser conectado ao GPIO 16 .
o código
Abra seu Arduino IDE e copie o seguinte código.
// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16
// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);
}
void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
Você primeiro define a qual pino o LED está conectado. Neste caso, o LED está conectado ao GPIO 16 .
const int ledPin = 16; // 16 corresponds to GPIO16
Em seguida, defina as propriedades do sinal PWM. Você define uma frequência de 5000 Hz, seleciona o canal 0 para gerar o sinal e define uma resolução de 8 bits. Você pode escolher outras propriedades além dessas para gerar diferentes sinais PWM.
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
Dentro do setup() , você precisa configurar o LED PWM com as propriedades que você definiu anteriormente, usando a função ledcSetup() que aceita ledChannel, frequência e resolução como parâmetros, assim:
ledcSetup(ledChannel, freq, resolution);
Em seguida, você precisa selecionar o GPIO do qual obterá o sinal. Para isso utilize a função ledcAttachPin() que aceita como parâmetros o GPIO que deseja receber o sinal e o canal que gerou o sinal. Neste exemplo, estaremos no LEDPin GPIO, que corresponde ao GPIO 16. O canal que produz o sinal é o led channel , que corresponde ao canal 0.
ledcAttachPin(ledPin, ledChannel);
No loop, você variará o ciclo de trabalho entre 0 e 255 para aumentar o brilho do LED.
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
Em seguida, reduza o brilho entre 255 e 0.
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
Para definir o brilho de um LED, basta usar ledcWrite() que aceita como parâmetros o canal e o ciclo de trabalho do sinal gerado.
ledcWrite(ledChannel, dutyCycle);
Como estamos usando resolução de 8 bits, o ciclo de trabalho será controlado com um valor entre 0 e 255. Observe que na função ledcWrite() usamos o canal que gerou o sinal, não o GPIO.
exemplo de teste
Carregue o código no seu ESP32. Certifique-se de que a placa e a porta COM corretas estejam selecionadas. Dê uma olhada no seu circuito. Você deve ter um LED mais escuro para aumentar e diminuir o brilho.
Obtenha o mesmo sinal em um GPIO diferente
Você pode obter o mesmo sinal do mesmo canal em diferentes GPIOs. Para fazer isso, você só precisa conectar esses GPIOs ao setup() .
Vamos modificar o exemplo anterior para escurecer 3 LEDs usando o mesmo sinal PWM do mesmo canal.
diagrama esquemático
Siga o próximo esquema para adicionar mais dois LEDs ao circuito:
(Este esquema usa a versão do módulo ESP32 DEVKIT V1 com 30 GPIOs - verifique as pinagens da placa que você está usando se estiver usando um modelo diferente.)
o código
Copie o código abaixo para o seu Arduino IDE.
// the number of the LED pin
const int ledPin = 16; // 16 corresponds to GPIO16
const int ledPin2 = 17; // 17 corresponds to GPIO17
const int ledPin3 = 5; // 5 corresponds to GPIO5
// setting PWM properties
const int freq = 5000;
const int ledChannel = 0;
const int resolution = 8;
void setup(){
// configure LED PWM functionalitites
ledcSetup(ledChannel, freq, resolution);
// attach the channel to the GPIO to be controlled
ledcAttachPin(ledPin, ledChannel);
ledcAttachPin(ledPin2, ledChannel);
ledcAttachPin(ledPin3, ledChannel);
}
void loop(){
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
// changing the LED brightness with PWM
ledcWrite(ledChannel, dutyCycle);
delay(15);
}
}
Este é o mesmo código do anterior, com algumas modificações. Definimos duas outras variáveis para os dois novos LEDs, que se referem a GPIO 17 e GPIO 5 .
const int ledPin2 = 17; // 17 corresponds to GPIO17
const int ledPin3 = 5; // 5 corresponds to GPIO5
Em seguida, em setup() , adicionamos as seguintes linhas para atribuir dois GPIOs ao canal 0. Isso significa que obteremos o mesmo sinal em ambos os GPIOs, que foi gerado no canal 0.
ledcAttachPin(ledPin2, ledChannel);
ledcAttachPin(ledPin3, ledChannel);
Itens de teste
Carregue o novo sketch no seu ESP32. Certifique-se de que a placa e a porta COM corretas estejam selecionadas. Agora, olhe para o seu circuito:
Todos os GPIOs emitem o mesmo sinal PWM. Assim, todos os três LEDs aumentam e diminuem o brilho ao mesmo tempo, criando um efeito sincronizado.
Resumir
Em resumo, neste artigo, você aprendeu como escurecer um LED usando o controlador LED PWM do ESP32 e o Arduino IDE. Definindo as propriedades corretas para o sinal, os conceitos aprendidos podem ser usados para controlar outras saídas usando PWM.