Plan (hide)

  1.   1.  Led it be
  2.   2.  Neopixel
    1.   2.1  Nourrir son NeoPixel
    2.   2.2  Montage
  3.   3.  Programmation
    1.   3.1  Installation de la librairie
    2.   3.2  Un premier programme
  4.   4.  Références

1.  Led it be

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é :

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 environ 2A avec une tension de 5V, en utilisant la bonne vieille formule de {$P = V \times I$}. Cela nous donne donc 1,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


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é.


Ajout de la librairie.

3.2  Un premier programme

// Pour pouvoir utiliser les méthodes de la libraireie NeoPixel
#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