Bonjours à tous,
Aujourd’hui je vais vous présenter le panneau LED 8x8 RGB WS2812-B et son fonctionnement.
Présentation :
Le panneau LED 8x8 RGB WS2812-B est un panneau de 64 leds RGB adressable organisé en une matrice de 8 leds par 8 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 » [LIEN] https://www.robot-ma...theque-arduino/
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 8 x 8 leds soit un total de 64 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 8 x 8 qui vaut 64 leds (équivalent à un ruban de 64 leds), il faut remplacer le 60 par 64.
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(255, 0, 0), 50); // Red
colorWipe(strip.Color(0, 255, 0), 50); // Green
colorWipe(strip.Color(0, 0, 255), 50); // Blue
Après « colorWipe(strip.Color(0, 0, 255), 50); // Blue » on retourne à la ligne et on écrit la même chose, sauf qu’on va remplacer les 0 par 255 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(127, 127, 127), 50); // White
theaterChase(strip.Color(127, 0, 0), 50); // Red
theaterChase(strip.Color(0, 0, 127), 50); // Blue
Juste après « theaterChase(strip.Color(127, 0, 0), 50); // Red » on ajoute la couleur Vert, donc on écrit la même chose que précédent en modifiant le 127 par 0 et le 0 au centre par 127 on ne touche pas le 50.
Voici ce que l’on obtient :