ESP32 S3 - LED - Fondu

L'ESP32 S3 rend simple le contrôle de la luminosité d'une LED via des signaux PWM, permettant des effets de fondu d'entrée et de sortie fluides avec seulement quelques lignes de code. Ce tutoriel vous guide à travers trois méthodes de fondu différentes — d'une approche simple basée sur delay() à une technique non bloquante avec millis() — afin que vous puissiez choisir celle qui convient le mieux à votre projet.

Ce que vous allez construire :

  1. Un circuit connectant une LED à l'ESP32 S3 avec une résistance limiteuse de courant
  2. Un sketch de fondu de base utilisant delay() pour un cycle de luminosité simple
  3. Un effet de fondu d'entrée fluide sur une période définie sans bloquer le reste du code
  4. Un effet de fondu de sortie fluide utilisant millis() pour un contrôle de temporisation non bloquant précis
ESP32 S3 - LED - Fade

Matériel Requis

1×ESP32 S3 WROOM N16R8
1×Alternativement: ESP32 S3 SuperMini Dev Module
1×Alternativement: ESP32 S3 Uno-form Board
1×Alternativement: ESP32 S3 Camera Board
1×Câble USB Type-A vers Type-C (pour PC USB-A)
1×Câble USB Type-C vers Type-C (pour PC USB-C)
1×LED Kit
1×LED (red)
1×LED Module
1×Alternativement: Button and LED Kit
1×220Ω Resistor
1×Plaque d'essai
1×Fils de connexion
1×Optionnel: Connecteur d'alimentation DC
1×Recommandé: Screw Terminal Expansion Board for ESP32 S3
1×Recommandé: Breakout Expansion Board for ESP32 S3
1×Recommandé: Power Splitter for ESP32 S3

Ou vous pouvez acheter les kits suivants:

1×Kit de Démarrage DIYables ESP32 S3 (ESP32 S3 inclus)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

Note d'achat: Pour simplifier le processus de câblage, nous recommandons d'utiliser le LED Module, qui est livré avec une résistance intégrée.

À propos de la LED

Une LED (diode électroluminescente) émet de la lumière lorsqu'un courant la traverse dans le sens direct. Elle a deux bornes : l'anode (positive, patte la plus longue) et la cathode (négative, patte la plus courte), et sa luminosité peut être contrôlée de manière progressive en faisant varier le rapport cyclique d'un signal PWM depuis l'ESP32 S3.

Spécifications clés

Les LED fonctionnent à une tension directe typique de 2 à 3 V selon la couleur, et elles nécessitent une résistance limiteuse de courant — généralement 220 ohms — câblée en série pour éviter qu'un courant excessif ne les détruise. L'ESP32 S3 utilise une plage de rapport cyclique PWM de 0 à 255 : une valeur de 0 équivaut à GND (LED éteinte), 255 équivaut à la pleine tension d'alimentation (LED à luminosité maximale), et les valeurs intermédiaires produisent des niveaux de luminosité proportionnels.

Brochage de la LED

La LED a deux broches, chacune avec un rôle distinct :

  1. Anode (+) : La patte la plus longue — connectez-la à la broche de sortie de l'ESP32 S3 via une résistance de 220 ohms
  2. Cathode (-) : La patte la plus courte avec un bord plat sur le boîtier — connectez-la à GND
LED Pinout

Comment fonctionne la LED

La luminosité de la LED est déterminée par la tension (ou la moyenne PWM) appliquée à son anode une fois la cathode reliée à la masse. Lorsque l'ESP32 S3 envoie un signal PWM, il bascule rapidement la broche entre HIGH et LOW, et la LED perçoit cette moyenne comme un niveau de luminosité continu.

How LED Works

※ Note:

Utilisez toujours une résistance (généralement 220 ohms) en série avec la LED pour limiter le courant et éviter sa destruction. La valeur de la résistance dépend des spécifications de la LED et de la tension d'alimentation.

ESP32 S3 - Fondu de LED

Les broches de sortie numérique de l'ESP32 S3 prennent en charge nativement la sortie PWM, ce qui les rend bien adaptées pour piloter des effets de fondu de LED. Vous connectez l'anode de la LED à n'importe quelle broche compatible PWM de l'ESP32 S3, connectez la cathode via une résistance de 220 ohms à GND, puis changez progressivement la valeur du rapport cyclique analogWrite() dans votre sketch. Augmenter le rapport cyclique de 0 à 255 produit un fondu d'entrée ; le diminuer de 255 à 0 produit un fondu de sortie.

Schéma de câblage entre la LED et l'ESP32 S3

Connectez la LED à l'ESP32 S3 en faisant passer l'anode par une résistance de 220 ohms vers la broche D7, et en connectant la cathode directement à GND. S'assurer que la résistance est toujours dans le circuit protège à la fois la LED et la broche de sortie de l'ESP32 S3 contre une surintensité.

Notes de sécurité

Ne connectez jamais une LED directement entre une broche d'alimentation et la masse sans résistance limiteuse de courant — même un court-circuit bref peut endommager définitivement la LED ou la broche du microcontrôleur. La résistance de 220 ohms utilisée ici convient à la plupart des LED standards de 5 mm fonctionnant à 3,3 V ; si vous utilisez une couleur de LED différente ou une autre tension d'alimentation, ajustez la valeur de la résistance en conséquence.

Broche de la LED Broche ESP32 S3
Anode (+) (patte la plus longue) D7 (via une résistance de 220Ω)
Cathode (-) (patte la plus courte) GND
ESP32 S3 LED Wiring Diagram

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Comment programmer

Programmer l'ESP32 S3 pour faire un fondu de LED implique deux fonctions principales. D'abord, déclarez la broche en sortie avec pinMode(), puis contrôlez la luminosité en passant une valeur entre 0 et 255 à analogWrite(). L'exemple ci-dessous utilise la broche D7 :

pinMode(D7, OUTPUT);
analogWrite(D7, brightness);

Où brightness est un entier de 0 (LED éteinte) à 255 (luminosité maximale). Incrémenter cette valeur dans le temps crée un fondu d'entrée ; la décrémenter crée un fondu de sortie.

Code ESP32 S3 - Exemple de fondu simple

Le code suivant démontre l'approche la plus simple pour faire un fondu de LED sur l'ESP32 S3 : il fait progresser la luminosité de 0 à 255 pour un fondu d'entrée, puis de 255 à 0 pour un fondu de sortie, en utilisant delay() pour régler le rythme entre chaque étape. C'est un excellent point de départ pour comprendre comment les valeurs de rapport cyclique PWM se traduisent en luminosité perçue de la LED, avant de passer aux techniques non bloquantes.

Étapes rapides

  1. Nouveau sur l'ESP32 S3 ? Terminez d'abord notre guide ESP32 S3 - Premiers pas.
  2. Câblez les composants : suivez le schéma de câblage ci-dessus pour connecter la LED à la broche D7 via une résistance de 220 ohms.
  3. Connectez la carte : branchez votre ESP32 S3 à votre ordinateur à l'aide d'un câble USB Type-C.
  4. Ouvrez Arduino IDE : lancez le logiciel Arduino IDE sur votre ordinateur.
  5. Sélectionnez la carte et le port : choisissez "ESP32S3 Dev Module" (ou votre variante spécifique d'ESP32 S3) comme carte et sélectionnez le bon port COM.
  6. Copiez le code : copiez le sketch ci-dessous et collez-le dans un nouveau projet Arduino IDE.
  7. Téléversez le code : cliquez sur le bouton Upload pour compiler et transférer le sketch sur votre ESP32 S3.
  8. Observez le résultat : regardez la LED faire un fondu d'entrée et de sortie fluide en cycle continu.
  9. Astuce : Essayez d'ajuster les valeurs de delay() pour accélérer ou ralentir le fondu, ou changez la taille de l'incrément de luminosité pour un effet plus progressif ou plus marqué.
Arduino IDE Upload Code
/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-led-fade */ #define LED_PIN 7 // The ESP32 S3 pin 7 connected to LED int brightness = 0; // how bright the LED is int fade_amount = 5; // how many points to fade the LED by // The setup function runs once on reset or power-up void setup() { // configure the Arduino Nano ESP32 pin as an output: pinMode(LED_PIN, OUTPUT); } // The loop function repeats indefinitely. void loop() { // set the brightness analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fade_amount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fade_amount = -fade_amount; } // wait for 30 milliseconds to see the dimming effect delay(30); }

Explication du code ligne par ligne

Le code ESP32 S3 ci-dessus contient une explication ligne par ligne. Veuillez lire les commentaires dans le code !

※ Note:

L'exemple ci-dessus utilise la fonction delay() pour le fondu d'entrée et de sortie. La fonction delay() rend le fondu moins fluide et empêche l'exécution du reste du code pendant le fondu. Dans les parties suivantes, nous apprendrons à faire des fondus d'entrée et de sortie fluides sans bloquer le reste du code, en utilisant la fonction millis() pour un contrôle de temporisation non bloquant.

Comment faire un fondu d'entrée de LED sur une période sans utiliser delay()

Ce sketch crée un effet de fondu d'entrée fluide en utilisant millis() pour calculer la luminosité actuelle en fonction du temps écoulé depuis le début du fondu. Comme il n'appelle jamais delay(), l'ESP32 S3 reste libre de gérer d'autres tâches — lire des capteurs, mettre à jour un écran, ou répondre à des appuis de bouton — tandis que la luminosité de la LED augmente régulièrement en arrière-plan.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-led-fade */ #define LED_PIN 7 // The ESP32 S3 pin 7 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long start_time; // The setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // configure the Arduino Nano ESP32 pin as an output start_time = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - start_time; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { start_time = millis(); // restart fade again } }

Comment faire un fondu de sortie de LED sur une période sans utiliser delay()

Ce sketch reprend l'approche du fondu d'entrée mais en sens inverse : il fait correspondre le temps écoulé à une valeur de luminosité décroissante, faisant passer la LED de la pleine luminosité à l'extinction sur une durée configurable. Combiner ceci avec le sketch de fondu d'entrée vous donne des cycles de fondu complets et non bloquants sur l'ESP32 S3 qui s'intègrent bien avec le reste de la logique de votre application.

/* * Ce code ESP32 S3 a été développé par newbiely.fr * Ce code ESP32 S3 est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/esp32-s3/esp32-s3-led-fade */ #define LED_PIN 7 // The ESP32 S3 pin 7 connected to LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long start_time; // The setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // configure the Arduino Nano ESP32 pin as an output start_time = millis(); } // fade-out in loop, and restart after finishing void loop() { unsigned long progress = millis() - start_time; if (progress <= FADE_PEDIOD) { long brightness = 255 - map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { start_time = millis(); // restart fade again } }

Applications et idées de projets

Le fondu de LED est une technique étonnamment polyvalente, et une fois que vous la maîtrisez sur l'ESP32 S3, elle ouvre la porte à un large éventail de projets pratiques :

  1. Veilleuse respirante : Créez une lampe d'ambiance apaisante qui fait doucement un fondu d'entrée et de sortie sur un cycle lent pour aider à la relaxation ou au sommeil.
  2. Indicateur d'état : Représentez différents états d'un appareil avec des vitesses de fondu distinctes — une pulsation lente pour la veille, une pulsation rapide pour le traitement actif.
  3. Réveil : Augmentez progressivement la luminosité de la LED pour simuler un lever de soleil naturel, offrant un réveil plus doux.
  4. Visualiseur de musique : Synchronisez les niveaux de fondu de la LED avec les données d'amplitude audio pour un affichage lumineux réactif au son simple mais efficace.
  5. Éclairage d'ambiance de maison intelligente : Intégrez le contrôle de fondu avec une commande Wi-Fi pour ajuster la luminosité de la LED à distance et créer la bonne ambiance.
  6. Indicateur de niveau de batterie : Associez la charge de batterie restante à la vitesse de fondu pour que les utilisateurs puissent lire l'état d'alimentation d'un coup d'œil.

Tutoriel vidéo

Regardez ci-dessous le tutoriel vidéo étape par étape de ce projet ESP32 S3.

Relevez le défi

Une fois que le fondu de base fonctionne, ces défis pousseront plus loin vos compétences sur l'ESP32 S3 et vous aideront à réfléchir à la temporisation, à la concurrence et à l'intégration de capteurs :

  1. Débutant : Modifiez la durée du fondu pour produire un effet de respiration lent et relaxant qui termine un cycle complet en 5 secondes.
  2. Débutant : Changez le code pour faire un fondu entre deux niveaux de luminosité non nuls (par exemple, de 50 à 200) au lieu de toujours partir d'une extinction complète.
  3. Intermédiaire : Contrôlez plusieurs LED simultanément avec des motifs de fondu différents, toutes s'exécutant sans aucun appel bloquant à delay().
  4. Intermédiaire : Ajoutez un bouton poussoir permettant à l'utilisateur de démarrer, de mettre en pause, ou de basculer entre différents préréglages de vitesse de fondu.
  5. Avancé : Pilotez une LED RGB avec des courbes de fondu superposées sur chaque canal de couleur pour produire un effet de cycle arc-en-ciel fluide.
  6. Avancé : Lisez un capteur analogique (comme un capteur de lumière ou un potentiomètre) sur l'ESP32 S3 et utilisez sa valeur pour contrôler dynamiquement la vitesse de fondu ou la luminosité cible en temps réel.

Références du langage

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !