Ce tutoriel montre comment générer des signaux PWM avec ESP8266 NodeMCU à l’aide de l’IDE Arduino. Par exemple, nous allons atténuer la luminosité des LED en modifiant le rapport cyclique au fil du temps.

Pour générer un signal PWM sur les broches ESP8266 avec Arduino IDE, utilisez analogWrite (broche, valeur). La valeur est un entier compris entre 0 et 255.
Pour les versions ESP8266 antérieures à 3.0, la plage par défaut est comprise entre 0 et 1023. La plage PWM peut être modifiée en appelant analogWriteRange (nouvelle_plage).
Vous pourriez également aimer lire d’autres guides sur PWM :
Avant de poursuivre ce didacticiel, vous devez avoir installé le module complémentaire ESP8266 dans votre IDE Arduino. Suivez le tutoriel suivant pour installer ESP8266 dans Arduino IDE.
ESP8266 NodeMCU PWM (modulation de largeur d’impulsion)
Les GPIO ESP8266 peuvent être réglés pour produire 0 V ou 3,3 V, mais ils ne peuvent produire aucune tension entre les deux. Cependant, vous pouvez produire de « fausses » tensions de niveau moyen à l’aide de la modulation de largeur d’impulsion (PWM), ce qui vous permettra de produire différents niveaux de luminosité des LED pour ce projet.
Si vous alternez très rapidement la tension d’une LED entre HIGH et LOW, vos yeux ne peuvent pas suivre la vitesse à laquelle la LED s’allume et s’éteint ; vous verrez simplement quelques gradations de luminosité.

C’est essentiellement ainsi que fonctionne PWM – en produisant une sortie qui change entre HIGH et LOW à une fréquence très élevée.
Le rapport cyclique est la fraction de la période de temps pendant laquelle la LED est réglée sur HIGH. La figure suivante illustre le fonctionnement de PWM.

Un rapport cyclique de 50 % donne une luminosité de 50 % de la LED, un rapport cyclique de 0 signifie que la LED est complètement éteinte et un rapport cyclique de 100 signifie que la LED est complètement allumée. Changer le rapport cyclique est la façon dont vous produisez différents niveaux de luminosité.
analogWrite()
Pour produire un signal PWM sur une broche donnée, vous utilisez la fonction suivante :
analogWrite(pin, value);
- épingler: PWM peut être utilisé sur les broches 0 à 16
- valeur: doit être compris entre 0 et GAMME PWM, qui est 255 par défaut. Lorsque la valeur est 0, PWM est désactivé sur cette broche. Une valeur de 255 correspond à un rapport cyclique de 100 %
Vous pouvez modifier la plage PWM en appelant :
analogWriteRange(new_range);
Par défaut, la fréquence ESP8266 PWM est de 1 kHz. Vous pouvez modifier la fréquence PWM avec :
analogWriteFreq(new_frequency);
Les valeurs valides sont comprises entre 100 Hz et 40 000 Hz.
ESP8266 NodeMCU Dim LED avec PWM
Dans cette section, nous allons construire un exemple simple qui atténue une LED afin que vous voyiez comment utiliser PWM dans vos projets. Vous aurez besoin des pièces suivantes :
Si vous utilisez un ESP-01vous avez besoin d’un Programmeur FTDI ou un Adaptateur série pour télécharger le code.
Vous pouvez utiliser les liens précédents ou accéder directement à MakerAdvisor.com/tools pour trouver toutes les pièces pour vos projets au meilleur prix !
Schématique
Après avoir téléchargé le code, câblez une LED à votre ESP8266 comme indiqué dans le schéma suivant. Nous connectons la LED à GPIO 2mais vous pouvez utiliser tout autre GPIO approprié.

Si vous utilisez un ESP-01, vous pouvez vérifier le brochage de la carte ici.
ESP8266 NodeMCU Code PWM
Copiez le code sur votre IDE Arduino et téléchargez-le sur votre ESP8266.
/*********
Rui Santos
Complete project details at https://www.raspberryme.com
*********/
const int ledPin = 2;
void setup() {
}
void loop() {
// increase the LED brightness
for(int dutyCycle = 0; dutyCycle < 255; dutyCycle++){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
// decrease the LED brightness
for(int dutyCycle = 255; dutyCycle > 0; dutyCycle--){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
}
Comment fonctionne le code
Continuez à lire cette section pour savoir comment fonctionne le code ou passez à la section suivante.
Commencez par définir la broche à laquelle la LED est attachée. Dans ce cas, la LED est attachée à GPIO 2 (D4).
const int ledPin = 2;
Dans le boucler()vous faites 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
analogWrite(ledPin, dutyCycle);
delay(1);
}
Et puis, entre 255 et 0 pour diminuer la luminosité.
for(int dutyCycle = 255; dutyCycle > 0; dutyCycle--){
// changing the LED brightness with PWM
analogWrite(ledPin, dutyCycle);
delay(1);
}
Pour régler la luminosité de la LED, vous devez utiliser analogWrite() fonction qui accepte comme arguments GPIO où vous voulez obtenir le signal PWM et une valeur entre 0 et 255 pour définir le rapport cyclique.
Télécharger le code
Dans votre IDE Arduino, accédez à Outils > Conseil et sélectionnez votre modèle ESP8266 (si vous utilisez un ESP-01, sélectionnez « Generic ESP8266 Module »).
Aller à Outils > Port et sélectionnez le port COM auquel l’ESP8266 est connecté.
Si vous utilisez un ESP-01, vous avez besoin d’un programmeur FTDI ou d’un adaptateur série pour télécharger le code. Voici les connexions que vous devez effectuer :

| ESP-01 | Programmeur FTDI |
| RX | TX |
| TX | RX |
| CH_PD | 3.3V |
| GPIO 0 | Terre |
| VCC | 3.3V |
| Terre | Terre |
Manifestation
Après avoir téléchargé votre croquis, la LED connectée à GPIO 2 devrait augmenter et diminuer sa luminosité au fil du temps.

Vous pouvez vous connecter GPIO 2 à un oscilloscope pour voir comment le signal PWM change dans le temps.

Lisez notre guide d’achat : Les meilleurs oscilloscopes pour les débutants et les amateurs d’électronique.
Conclusion
Nous espérons que vous avez trouvé ce guide sur l’utilisation de l’ESP8266 PWM utile. Outre le contrôle de la luminosité des LED, PWM peut également être utilisé pour contrôler la vitesse du moteur à courant continu.
Vous aimerez peut-être aussi essayer nos autres projets :
Si vous aimez ESP8266, assurez-vous de jeter un œil à nos ressources :
Merci d’avoir lu.

