Bande LED ESP32 - WS2812B

Dans ce tutoriel, nous allons apprendre à utiliser l'ESP32 pour contrôler une bande LED RGB WS2812B. Avec une seule broche ESP32 :

Préparation du matériel

1×ESP-WROOM-32 Dev Module
1×USB Cable Type-C
1×WS2812B RGB LED Strip
1×1000uF Capacitor
1×470Ω resistor
1×5V Power Adapter
1×(Optional) DC Power Jack
1×Jumper Wires
1×Breadboard
1×(Recommended) ESP32 Screw Terminal Adapter

Or you can buy the following sensor kits:

1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)
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.

À propos de la bande LED RGB WS2812B

Brochage

la bande LED RVB WS2812B possède trois broches :

  • Broche GND : doit être connectée à GND (0V)
  • Broche VCC : doit être connectée à 5V de l'alimentation externe
  • Broche Din : est la broche qui reçoit le signal de commande. Elle doit être connectée à une broche ESP32.
Brochage WS2812B

※ NOTE THAT:

L'ordre des broches peut varier selon les fabricants. Utilisez TOUJOURS les étiquettes imprimées sur la bande LED.

Diagramme de câblage

Schéma de câblage de la bande LED RVB WS2812B ESP32

This image is created using Fritzing. Click to enlarge image

Si vous ne savez pas comment alimenter l'ESP32 et d'autres composants, vous pouvez trouver des conseils dans le tutoriel suivant : Comment alimenter l'ESP32.

Comment programmer pour une bande LED RGB WS2812B

Il existe deux bibliothèques qui peuvent être utilisées pour contrôler la bande de LED WS2812B :

  • Bibliothèque Adafruit NeoPixel.
  • Bibliothèque FastLED.

Ce tutoriel utilisera la bibliothèque Adafruit NeoPixel.

  • Déclarez un objet WS2812B
#define PIN_WS2812B 4 // Broche ESP32 qui se connecte à WS2812B #define NUM_PIXELS 30 // Le nombre de LEDs (pixels) sur WS2812B Adafruit_NeoPixel WS2812B(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800);
  • Initialise le WS2812B
WS2812B.begin(); // INITIALISE l'objet bande WS2812B (OBLIGATOIRE)
  • Définissez la couleur de chaque LED individuelle (appelée pixel).
WS2812B.setPixelColor(pixel, WS2812B.Color(255, 0, 0));
  • Régler la luminosité de toute la bande.
WS2812B.setBrightness(100); // une valeur de 0 à 255

※ NOTE THAT:

WS2812B.setBrightness() est utilisé pour tous les pixels sur la bande LED. Pour régler la luminosité de chaque pixel individuellement, nous pouvons ajuster la valeur de la couleur.

Les valeurs définies par WS2812B.setBrightness() et WS2812B.setPixelColor() ne prennent effet que lorsque WS2812B.show() est appelé.

Code ESP32

Le code ci-dessous effectue :

  • Transformez les pixels en vert un par un avec un délai entre chaque pixel
  • Éteignez tous les pixels pendant deux secondes
  • Allumez tous les pixels en rouge en même temps pendant deux secondes
  • Répétez le processus ci-dessus indéfiniment
/* * Ce code ESP32 a été développé par newbiely.fr * Ce code ESP32 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/esp32-ws2812b-led-strip */ #include <Adafruit_NeoPixel.h> #define PIN_WS2812B 16 // The ESP32 pin GPIO16 connected to WS2812B #define NUM_PIXELS 30 // The number of LEDs (pixels) on WS2812B LED strip Adafruit_NeoPixel ws2812b(NUM_PIXELS, PIN_WS2812B, NEO_GRB + NEO_KHZ800); void setup() { ws2812b.begin(); // initialize WS2812B strip object (REQUIRED) } void loop() { ws2812b.clear(); // set all pixel colors to 'off'. It only takes effect if pixels.show() is called // turn pixels to green one-by-one with delay between each pixel for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel ws2812b.setPixelColor(pixel, ws2812b.Color(0, 255, 0)); // it only takes effect if pixels.show() is called ws2812b.show(); // update to the WS2812B Led Strip delay(500); // 500ms pause between each pixel } // turn off all pixels for two seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(2000); // 2 seconds off time // turn on all pixels to red at the same time for two seconds for (int pixel = 0; pixel < NUM_PIXELS; pixel++) { // for each pixel ws2812b.setPixelColor(pixel, ws2812b.Color(255, 0, 0)); // it only takes effect if pixels.show() is called } ws2812b.show(); // update to the WS2812B Led Strip delay(1000); // 1 second on time // turn off all pixels for one seconds ws2812b.clear(); ws2812b.show(); // update to the WS2812B Led Strip delay(1000); // 1 second off time }

Étapes rapides

  • Cliquez sur l'icône Libraries dans la barre gauche de l'IDE Arduino.
  • Recherchez "Adafruit NeoPixel", puis trouvez la bibliothèque WS2812B de Adafruit.
  • Cliquez sur le bouton Install pour installer la bibliothèque NeoPixel.
Bibliothèque neopixel ESP32
  • Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduini
  • Cliquez sur le bouton Upload dans l'IDE Arduini pour téléverser le code sur l'ESP32
  • Observez l'effet de la LED

※ NOTE THAT:

Pour tout effet LED complexe, nous proposons le service de programmation payant

Vidéo

※ OUR MESSAGES

  • Please feel free to share the link of this tutorial. However, Please do not use our content on any other websites. We invested a lot of effort and time to create the content, please respect our work!