[Notas de estudo mais completas do ESP32 (básico) - 6.ESP32 PWM (saída analógica)]

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.

Acho que você gosta

Origin blog.csdn.net/m0_46509684/article/details/129109888
Recomendado
Clasificación