Plan (hide)
- 1. Led it be
- 2. Neopixel
- 2.1 Nourrir son NeoPixel
- 2.2 Montage
- 3. Programmation
- 4. Références
1. Led it be
![](uploads/Divers/Guirlande/neopixelLedRgb.jpg)
C'est parti, je viens de recevoir mon ruban de leds RGB NeoPixel, je me suis lancé dans une guirlande de Noël pour faire cramer le sapin. Au niveau du matériel, j'ai acheté :
- Ruban NeoPixel - 30 Leds/m ;
- Un condensateur
4700
{$\mu$}F
,10V
;
Traînait chez moi :
- Un arduino Uno et un shield wifi ;
- Une alimentation
5V
,10A
;
L'arduino est là pour contrôler la guirlande et le shield wifi pour en faire un objet connecté qui pourra réagir en fonction d'interaction.
2. Neopixel
Sur mon ruban il y a 30 LEDs RGB et cela serait éventuellement difficile à câbler proprement et à contrôler à partir d'un unique arduino. Le ruban NeoPixel apporte une solution intéressante. Sur ce dernier les leds rouges, vertes et bleues sont intégrées côte à côte sur un petit support SMD (composants montés en surface) lui-même intégré sur la puce du pilote (le contrôleur). Chaque led a son propre contrôleur et on peut les piloter par un simple fil. Les Leds sont adressables.
Il est important de connaître la puissance consommée afin de pouvoir calibrer l'alimentation. La puissance d'utilisation approximative de pointe (toutes les LEDs à 100 LEDs au maximum de luminosité) par mètre est de:
9.5W
pour 30 LEDs/m, ce qui nous donne environ2A
avec une tension de5V
, en utilisant la bonne vieille formule de {$P = V \times I$}. Cela nous donne donc1,9A
.
2.1 Nourrir son NeoPixel
Il est préférable de respecter quelques règles pour alimenter son ruban qui aime le 5V
. Adafruit donne quelques recommandations :
- Ajoutez un condensateur de 1000 µF, 6.3V (ou plus) entre les broches + et - de l’alimentation (cf. image ci-dessous).
- Placez une résistance entre 300 et 500 {$\Omega$} entre la broche de sortie de l'arduino et l'entrée du NéoPixel et minimiser la distance.
- Connectez toujours d'abord la masse puis le
+5V
et enfin les données. La déconnexion doit se faire dans le sens inverse.
La question qui vient après est donc comment alimenter le ruban. Il est clair que l'on ne peut pas utiliser celle de l'arduino on va donc en utiliser une "externe". Le calcul réalisé précédemment montre qu'il nous faut une alimentation continue 5V
2A
. Celle récupérée suffit donc largement.
2.2 Montage
![](uploads/Divers/Guirlande/NeoPixel1_bb.png)
Schéma de montage.
3. Programmation
Nous allons essayer de réaliser un premier petit programme. Mais avant toute chose il faut installer la librairie et les headers.
3.1 Installation de la librairie
Commencer par télécharger la librairie, ensuite sous l'IDE arduino. Sélectionnez le fichier zip que vous avez téléchargé.
![](uploads/Divers/Guirlande/AjoutLib.png)
Ajout de la librairie.
3.2 Un premier programme
#include <Adafruit_NeoPixel.h>
const unsigned int BROCHE = 6;
const unsigned int NBruban = 30;
/* 1er paramètre, nombre de neoruban en chaine
2ème paramètre, la broche utilisée
3ème paramètre, le type de pixel :
- NEO_KHZ800 flux de données à 800 KHz (plupart des NéoPixel basé sur les LEDs w/WS2812)
- NEO_KHZ400 flux de données à 400 KHz (Pour les ruban classiques 'v1' FLORA (pas les V2) pilotés par WS2811)
- NEO_GRB ruban sont raccordés en flux de donnée GRB (GRB=Green,Red,Blue=Vert,Rouge,Bleu - la plupart des produits NéoPixel)
- NEO_RGB ruban sont raccordés en flux de donnée RGB (RGB=Red,Green,Blue=Rouge,Vert,Bleu - ruban FLORA v1, pas la v2)
*/
Adafruit_NeoPixel ruban = Adafruit_NeoPixel(NBruban, BROCHE, NEO_GRB + NEO_KHZ800);
void setup() {
ruban.setBrightness(255); // On fixe la luminosité (0 éteint) (255 maxi)
ruban.begin(); // initialisation de la librairie NeoPIxel.
}
void loop() {
for (int i = 0; i < NBruban / 3; i++)
{ /*
setPixelColor(num_Led, couleur)
numLed : numéro de la led, numérotation à partir de 0
couleur : (type 32 bit) codé en RGB. On appelle la méthode Color(r,g,b) ici.
*/
ruban.setPixelColor(0 + 3 * i, ruban.Color(255, 0, 0)); // Rouge
ruban.setPixelColor(1 + 3 * i, ruban.Color(0, 255, 0)); // Vert
ruban.setPixelColor(2 + 3 * i, ruban.Color(0, 0, 255)); // Bleu
}
ruban.show(); // On envoie les couleurs sur la guirlande
}
4. Références
https://learn.adafruit.com/adafruit-neopixel-uberguide/best-practices