[Notes d'étude ESP32 les plus complètes (de base) - 6.ESP32 PWM (sortie analogique)]

À propos de ce tutoriel :

Les bases de l'ESP32                                

1. Introduction à ESP32                                                                

2. Environnement de développement intégré ESP32 Arduino

3. VS Code et PlatformIO

4. Broches ESP32

5. Entrée et sortie ESP32

6. Modulation de largeur d'impulsion ESP32 ☑

7. Entrée analogique ESP32

8. Minuterie d'interruption ESP32

9 .ESP32 sommeil profond

Protocole ESP32

Serveur Web ESP32

ESP32LoRa

ESP32BLE

Client-serveur ESP32 BLE

Bluetooth ESP32

ESP32 MQTT

ESP32 ESP-MAINTENANT

Wi-Fi ESP32

WebSocket ESP32

ESP32 ESP-MESH

Boîte aux lettres ESP32

SMS ESP32

ESP32 HTTP obtenir POST

API Web HTTP GET

API Web HTTP POST

 Articles sur le serveur ESP32

Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !

 Module de capteur ESP32

Continuez à mettre à jour, suivez les blogueurs et ne vous perdez pas ! ! !

Combat ultime ESP32

Plus de 100 projets pratiques ESP32, faites attention ! ! !

        Dans ce tutoriel, nous allons vous montrer comment générer un signal PWM avec ESP32 en utilisant Arduino IDE. À titre d'exemple, nous allons construire un circuit simple pour atténuer une LED à l'aide du contrôleur LED PWM de l'ESP32. Nous vous montrerons également comment obtenir le même signal PWM simultanément sur différents GPIO.

        Avant de poursuivre ce didacticiel, vous devez avoir installé le module complémentaire ESP32 dans l'IDE Arduino. Si vous n'avez pas encore installé ESP32, suivez l'un des tutoriels ci-dessous pour l'installer sur l'IDE Arduino.

pièces nécessaires

Pour suivre ce tutoriel, vous aurez besoin de ces pièces :

ESP32 DOIT DEVKIT V1 Board
3 LEDs 5mm
3x résistances 330 ohms
Breadboard
Jumper wires

Contrôleur PWM LED ESP32

ESP32 dispose d'un contrôleur LED PWM avec 16 canaux indépendants qui peuvent être configurés pour générer des signaux PWM avec différentes propriétés.

Voici les étapes à suivre pour atténuer une LED à l'aide de PWM à l'aide de l'IDE Arduino :

1. Tout d'abord, vous devez sélectionner un canal PWM. Il y a 16 canaux de 0 à 15.

2. Ensuite, vous devez définir la fréquence du signal PWM. Pour les LED, une fréquence de 5000 Hz peut être utilisée.

3.  Vous devez également définir la résolution du rapport cyclique du signal : la résolution est de 1 à 16 bits. Nous utiliserons une résolution de 8 bits, ce qui signifie que vous pouvez utiliser une valeur comprise entre 0 et 255 pour contrôler la luminosité de la LED.

4.  Ensuite, vous devez spécifier sur quel GPIO ou GPIO le signal apparaîtra. Pour cela, vous utiliserez la fonction suivante :

ledcAttachPin(GPIO, channel)

Cette fonction accepte deux paramètres. Le premier est le GPIO qui produira le signal, et le second est le canal qui générera le signal.

5.  Enfin, pour contrôler la luminosité des LED à l'aide de PWM, utilisez la fonction suivante :

ledcWrite(channel, dutycycle)

Cette fonction accepte comme paramètres le canal et le rapport cyclique pour générer le signal PWM.

Diminuez la LED

Regardons un exemple simple pour voir comment utiliser le contrôleur ESP32 LED PWM à l'aide de l'IDE Arduino.

diagramme schématique

Connectez la LED à l'ESP32 comme indiqué dans l'image ci-dessous. La LED doit être connectée au GPIO 16 .

le code

Ouvrez votre IDE Arduino et copiez le code suivant.

// 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);
  }

Vous définissez d'abord à quelle broche la LED est connectée. Dans ce cas, la LED est connectée au GPIO 16 .

const int ledPin = 16;  // 16 corresponds to GPIO16

 Ensuite, définissez les propriétés du signal PWM. Vous définissez une fréquence de 5000 Hz, sélectionnez le canal 0 pour générer le signal et définissez une résolution de 8 bits. Vous pouvez choisir d'autres propriétés que celles-ci pour générer différents signaux PWM.

const int freq = 5000; 
const int ledChannel = 0; 
const int resolution = 8;

Dans setup() , vous devez configurer le LED PWM avec les propriétés que vous avez définies précédemment, en utilisant la fonction ledcSetup() qui accepte ledChannel, fréquence et résolution comme paramètres, comme ceci :

ledcSetup(ledChannel, freq, resolution);

Ensuite, vous devez sélectionner le GPIO à partir duquel vous obtiendrez le signal. Pour ce faire, utilisez la fonction ledcAttachPin() qui accepte en paramètre le GPIO sur lequel vous souhaitez obtenir le signal et le canal qui a généré le signal. Dans cet exemple, nous serons sur LEDPin GPIO, qui correspond au GPIO 16. Le canal qui produit le signal est le led channel , qui correspond au canal 0.

ledcAttachPin(ledPin, ledChannel);

Dans la boucle, vous ferez varier le rapport cyclique entre 0 et 255 pour augmenter la luminosité de la LED.

for(int dutyCycle = 0; dutyCycle <= 255; dutyCycle++){
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(15); 
}

Ensuite, réduisez la luminosité entre 255 et 0.

for(int dutyCycle = 255; dutyCycle >= 0; dutyCycle--){
    // changing the LED brightness with PWM
    ledcWrite(ledChannel, dutyCycle);
    delay(15);
 }

 Pour régler la luminosité d'une LED, il suffit d'utiliser ledcWrite() qui accepte en paramètre le canal et le rapport cyclique du signal généré.

ledcWrite(ledChannel, dutyCycle);

Puisque nous utilisons une résolution de 8 bits, le rapport cyclique sera contrôlé avec une valeur comprise entre 0 et 255. Notez que dans la fonction ledcWrite() nous utilisons le canal qui a généré le signal, pas le GPIO.

exemple d'essai

Téléchargez le code sur votre ESP32. Assurez-vous que la carte et le port COM corrects sont sélectionnés. Jetez un oeil à votre circuit. Vous devriez avoir un gradateur LED pour augmenter et diminuer la luminosité.

Obtenez le même signal sur un GPIO différent

Vous pouvez obtenir le même signal du même canal dans différents GPIO. Pour ce faire, il vous suffit de connecter ces GPIO à setup() .

Modifions l'exemple précédent pour atténuer 3 LED en utilisant le même signal PWM du même canal.

diagramme schématique

Suivez le schéma suivant pour ajouter deux autres LED au circuit :

(Ce schéma utilise la version du module ESP32 DEVKIT V1 avec 30 GPIO - vérifiez les broches de la carte que vous utilisez si vous utilisez un modèle différent.)

le code

Copiez le code ci-dessous dans votre IDE Arduino.

// 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);
  }
}

C'est le même code que le précédent, avec quelques modifications. Nous définissons deux autres variables pour les deux nouvelles LED, qui font référence à GPIO 17 et GPIO 5 .

const int ledPin2 = 17; // 17 corresponds to GPIO17 
const int ledPin3 = 5;  // 5 corresponds to GPIO5

Ensuite, dans setup() , nous avons ajouté les lignes suivantes pour attribuer deux GPIO au canal 0. Cela signifie que nous obtiendrons le même signal sur les deux GPIO, qui a été généré sur le canal 0.

ledcAttachPin(ledPin2, ledChannel); 
ledcAttachPin(ledPin3, ledChannel);

Articles de test

Téléchargez le nouveau croquis sur votre ESP32. Assurez-vous que la carte et le port COM corrects sont sélectionnés. Maintenant, regarde ton circuit :

Tous les GPIO émettent le même signal PWM. Ainsi, les trois LED augmentent et diminuent la luminosité en même temps, créant un effet synchronisé.

Résumer

        En résumé, dans cet article, vous avez appris à atténuer une LED à l'aide du contrôleur LED PWM de l'ESP32 et de l'IDE Arduino. En définissant les propriétés correctes pour le signal, les concepts appris peuvent être utilisés pour contrôler d'autres sorties à l'aide de PWM.

Je suppose que tu aimes

Origine blog.csdn.net/m0_46509684/article/details/129109888
conseillé
Classement