ESP32 PWM avec Arduino Output (sortie analogique)

dans ce tutoriel, nous allons vous montrer comment générer des signaux PWM avec L’ESP32 en utilisant Arduino ID. À titre d’exemple, nous allons construire un circuit simple qui atténue une LED à l’aide du contrôleur LED PWM de L’ESP32. Nous allons également vous montrer comment vous pouvez obtenir le même signal PWM sur différents GPIO en même temps.

avant de poursuivre ce tutoriel, vous devriez avoir le module complémentaire ESP32 installé dans votre Arduino Arduino., Suivez l’un des tutoriels suivants pour installer L’ESP32 sur L’Arduino Arduino, si ce n’est pas déjà fait.

  • installation de la carte ESP32 dans Arduino ID (instructions Windows)
  • installation de la carte ESP32 dans Arduino Arduino (instructions Mac et Linux)

Nous vous recommandons également de consulter les ressources suivantes:

  • démarrage avec le Module de développement ESP32
  • référence de brochage ESP32: quelles broches GPIO

regardez le tutoriel vidéo

ce tutoriel est disponible en format vidéo (Voir ci-dessous) et en format écrit (continuer la lecture).,

pièces requises

pour suivre ce tutoriel, vous avez besoin de ces pièces:

  • carte ESP32 doit DEVKIT V1 – lire les meilleures cartes de développement ESP32
  • LED 3x5mm
  • résistance 3×330 Ohms

Vous pouvez utiliser les liens précédents ou aller directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix!,

contrôleur PWM LED ESP32

L’ESP32 dispose d’un contrôleur PWM LED 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 tamiser une LED avec PWM à l’aide de L’Arduino Arduino:

1. Tout d’abord, vous devez choisir un canal PWM. Il y a 16 canaux de 0 à 15.

2. Ensuite, vous devez définir la fréquence du signal PWM. Pour une LED, une fréquence de 5000 Hz est très bien à utiliser.

3., Vous devez également définir la résolution du cycle de service du signal: vous avez des résolutions de 1 à 16 bits. Nous utiliserons une résolution 8 bits, ce qui signifie que vous pouvez contrôler la luminosité de la LED en utilisant une valeur de 0 à 255.

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

ledcAttachPin(GPIO, channel)

Cette fonction accepte deux arguments. Le premier est le GPIO qui émettra le signal, et le second est le canal qui générera le signal.

5., Enfin, pour contrôler la luminosité de la LED en utilisant PWM, vous utilisez la fonction suivante:

ledcWrite(channel, dutycycle)

Cette fonction accepte comme arguments le canal qui génère le signal PWM, et le rapport cyclique.

gradation D’une LED

voyons un exemple simple pour voir comment utiliser le contrôleur PWM ESP32 LED à l’aide de L’Arduino Arduino.

schéma

Branchez une LED à votre ESP32 comme dans le schéma suivant. La LED doit être connectée à GPIO 16.,

(Ce schéma utilise la version du module ESP32 DEVKIT V1 avec 30 GPIO – si vous utilisez un autre modèle, veuillez vérifier le brochage de la carte que vous utilisez.)

Remarque: vous pouvez utiliser le code pin que vous voulez, tant qu’il peut agir comme une sortie. Toutes les broches qui peuvent agir comme sorties peuvent être utilisées comme broches PWM. Pour plus d’informations sur les GPIO ESP32, lisez: ESP32 Brochage référence: quelles broches GPIO devriez-vous utiliser?

Code

ouvrez votre Arduino Arduino et copiez le code suivant.,

afficher le code brut

Vous commencez par définir la broche à laquelle la LED est attachée. Dans ce cas, la LED est fixée au GPIO 16.

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

ensuite, vous définissez les propriétés du signal PWM. Vous définissez une fréquence de 5000 Hz, choisissez 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, différentes de 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 LED PWM avec les propriétés que vous avez définies précédemment en utilisant la fonction ledcSetup() qui accepte comme arguments, le canal LED, la fréquence et la résolution, comme suit:

ledcSetup(ledChannel, freq, resolution);

ensuite, vous devez choisir le GPIO. Pour cela, utilisez la fonction ledcAttachPin () qui accepte comme arguments le GPIO où vous voulez obtenir le signal et le canal qui génère le signal. Dans cet exemple, nous allons obtenir le signal dans le GPIO ledPin, qui correspond à GPIO 16., Le canal qui génère le signal est le canal LED, qui correspond au canal 0.

ledcAttachPin(ledPin, ledChannel);

dans la boucle, vous varierez le cycle de service entre 0 et 255 pour augmenter la luminosité de la LED.

puis, entre 255 et 0 pour diminuer la luminosité.

pour régler la luminosité de la LED, il vous suffit d’utiliser la fonction ledcWrite() qui accepte comme arguments le canal qui génère le signal et le rapport cyclique.

ledcWrite(ledChannel, dutyCycle);

Comme nous utilisons une résolution 8 bits, le rapport cyclique sera contrôlé à l’aide d’une valeur comprise entre 0 et 255., Notez que dans la fonction ledcWrite (), nous utilisons le canal qui génère le signal, et non le GPIO.

test de l’exemple

Téléchargez le code sur votre ESP32. Assurez-vous d’avoir la bonne carte et le port COM sélectionnés. Regardez votre circuit. Vous devriez avoir un gradateur LED qui augmente et diminue la luminosité.

Obtenir le Même Signal sur les Différents GPIOs

Vous pouvez obtenir le même signal à partir de la même chaîne dans différents GPIOs., Pour y parvenir, il vous suffit d’attacher ces GPIO au même canal sur le setup().

modifions l’exemple précédent pour dim 3 LED en utilisant le même signal PWM du même canal.

schéma

ajoutez deux LED supplémentaires à votre circuit en suivant le schéma suivant:

(ce schéma utilise L’ESP32 version du module devkit v1 avec 30 GPIO – si vous utilisez un autre modèle, veuillez vérifier le brochage de la carte que vous utilisez.,)

Code

Copiez le code suivant sur votre Arduino Arduino.

Afficher le code brut

C’est le même code que la précédente mais avec quelques modifications. Nous avons défini deux variables supplémentaires pour deux nouvelles LED, qui se réfèrent à 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 affecter les deux GPIO au canal 0. Cela signifie que nous obtiendrons le même signal, qui est généré sur le canal 0, sur les deux GPIO.

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

Test du Projet

Télécharger la nouvelle esquisse à votre ESP32., Assurez-vous d’avoir la bonne carte et le port COM sélectionnés. Maintenant, jetez un oeil à votre circuit:

Tous les GPIOs sont la sortie le même signal PWM. Ainsi, les trois LED augmentent et diminuent la luminosité simultanément, ce qui entraîne un effet synchronisé.

Habillage

En résumé, dans ce post, vous avez appris à utiliser la LED PWM contrôleur de la ESP32 avec l’IDE Arduino pour varier l’intensité d’une LED., Les concepts appris peuvent être utilisés pour contrôler d’autres sorties avec PWM en définissant les bonnes propriétés sur le signal.

nous avons d’autres tutoriels liés à ESP32 que vous pourriez également aimer:

  • serveur web ESP32 – Arduino ID
  • température D’enregistrement des données ESP32 sur carte MicroSD
  • serveur web ESP32 avec BME280-Mini Station Météo
  • ESP32 vs ESP8266-avantages et inconvénients

. Si vous aimez ESP32 et que vous souhaitez en savoir plus, nous vous recommandons de vous inscrire au cours Learn ESP32 with Arduino ID.

Leave a Comment