Bonjours à tous,
Aujourd’hui je vais vous présenter le panneau LED 16x16 RGB WS2812-B et son fonctionnement.
Présentation :
Le panneau LED 16x16 RGB WS2812-B est un panneau de 256 leds RGB adressable organisé en une matrice de 16 leds par 16 leds. Chacune des leds peut être pilotées indépendamment et de n’importe quelle couleur. On peut donc l’utiliser pour afficher des animations etc.…
Matériel nécessaire :
- Une Arduino et son câble USB
- Le panneau LED
- 3 fils de type mâle-mâle
Les schémas de câblage :
Le panneau LED possède 2 prises 3 fils une « input » et une « output » qui ont chacune :
l’alimentation 5V fil rouge ,
La 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 panneau LED et relier DIN du panneau 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 panneaux LED il me suffira de brancher le connecteur DIN de mon deuxième panneau à mon DOUT de mon premier panneau …
Code :
Pour piloter ce panneau LED il existe un ensemble de librairies qui vont vous simplifier la tâche.
Il vous faut installer :
- Adafruit NeoPixel
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 : strandtest_wheel (fichier / exemples / Adafruit NeoPixel / strandtest_wheel )
Bien que ce programme ne soit pas tout de suite compatible avec notre matrice on peut l’essayer et voici ce que l’on obtient :
Cela ne fonctionne pas complètement comme prévu mais pas de panique c’est normal on va corriger les différents points.
Tout notre panneau n’est pas utilisé.
Pour Régler cela il faut juste ajuster le code aux dimensions de notre panneau à savoir 16 x 16 leds soit un total de 256 leds.
On modifie la ligne :
Adafruit_NeoPixel strip = Adafruit_NeoPixel(60, PIN, NEO_GRB + NEO_KHZ800);
Cette ligne défini un ruban de 60 leds.
Puisqu’on a une matrice de 16 x 16 qui vaut 256 leds (équivalent à un ruban de 256 leds), il faut remplacer le 60 par 256.
On téléverse, et voici le résultat obtenu :
Vu que notre panneau est maintenant à taille, on va pouvoir s’amuser à rajouter 2 autres couleurs.
Pour ce faire on va ajouter une couleur à la ligne :
void loop() {
// Some example procedures showing how to display to the pixels:
colorWipe(strip.Color(100, 0, 0), 50); // Red
colorWipe(strip.Color(0, 100, 0), 50); // Green
colorWipe(strip.Color(0, 0, 100), 50); // Blue
Après « colorWipe(strip.Color(0, 0, 100), 50); // Blue » on retourne à la ligne et on écrit la même chose, sauf qu’on va remplacer les 0 par 100 pour faire du blanc et ne pas toucher le 50 (le 50 représente la vitesse des leds)
Voici ce que l’on obtient :
On va faire Pareille à la ligne :
theaterChase(strip.Color(100, 100, 100), 50); // White
theaterChase(strip.Color(100, 0, 0), 50); // Red
theaterChase(strip.Color(0, 0, 100), 50); // Blue
Juste après « theaterChase(strip.Color(100, 0, 0), 50); // Red » on ajoute la couleur Vert, donc on écrit la même chose que précédent en modifiant le 100 par 0 et le 0 au centre par 100 on ne touche pas le 50.
Voici ce que l’on obtient :