Bonjours à tous,
Aujourd’hui je vais vous présenter le disque LED RGB WS2812-B et son fonctionnement.
disque-led-rgb-ws2812-b.jpg 19,67 Ko
22 téléchargement(s)
Présentation :
Le disque de LED RGB WS2812-B est un disque composé de plusieurs LEDS RGB WS2812-B. Utile pour faire des éclairages décoratifs, ou encore faire une lampe de bureau avec sélection de couleur, etc…. Chacune des leds peut être pilotées indépendamment et de n’importe quelle couleur.
Matériel nécessaire :
- Une Arduino et son câble USB
- Le disque LED
- 3 fils de type mâle-mâle
Les schémas de câblage :
20221102_102806.jpg 96,06 Ko
22 téléchargement(s)
Le disque LED possède 2 prises 3 fils une « input » et une « output » qui ont chacune :
l’alimentation 5V fil rouge,
une masse (GND ) fil blanc,
et les signaux DIN et DOUT ( Data Input et Data Output) fil vert.
Il faut relier le 5V et GND de l’arduino au 5V et GND du disque LED et relier DIN du disque LED à la broche de notre choix, GPIO 6 dans cet exemple.
L’avantage de ce genre de led adressable c’est qu’on peut les chaîner, si je veux brancher deux disques LED il me suffira de brancher le connecteur DIN de mon deuxième disque à mon DOUT de mon premier disque…
20221102_103341.jpg 55,04 Ko
25 téléchargement(s)
Code :
Pour piloter ce disque de LED il existe un ensemble de librairies qui vont vous simplifier la tâche.
Il vous faut installer :
- FastLED
Rappel pour installer les librairies vous pouvez le faire directement avec l’IDE Arduino via « outils » et « gérer les bibliothèques »
Une fois les librairies installées on va pouvoir ouvrir le code d’exemple : Blink (fichier / exemples / FastLED / Blink)
Capture.PNG 22,25 Ko
22 téléchargement(s)
À l’aide du code d’exemple blink et d’un potentiomètre on va créer un programme permettant de sélectionner la led que l’on veut faire clignoter sur le disque.
On va d’abord ouvrir une nouvelle fenêtre en allant sur « fichier » et sur « nouveau ».
Aller sur le code Blink et copier :
#include <FastLED.h> #define NUM_LEDS 8 #define DATA_PIN 6 CRGB leds[NUM_LEDS]; void setup() { Serial.begin(9600); FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS); } void loop() { // Turn the LED on, then pause leds[0] = CRGB::Red; FastLED.show(); delay(500); // Now turn the LED off, then pause leds[0] = CRGB::Black; FastLED.show(); delay(500); }
Coller le tout sur la nouvelle page que l’on a créé juste avant.
Capture2.PNG 16,45 Ko
24 téléchargement(s)
On ajoute le code de la lecture du potentiomètre dans la fonction « void loop() » puis on fait la conversion des données du pot au nombre de led qu’a notre disque de LED (actuellement 35 leds).
int pot = analogRead(A0); int led = pot/30; Serial.print("Potentiomètre: "); Serial.println(pot); Serial.print("Numéro de LED: "); Serial.println(led);
Remplacer « leds[0] » par « leds[led], » ajuster les « delay(500); » (selon votre choix) puis téléverser.
Voici la totalité du code :