Articles - Programmation

Programmer un ruban de led

Nous avons récemment reçu un ruban de LED programmables au fablab, nous l'attendions tous avec impatience pour pouvoir s’éclairer d’une autre manière qu’avec les néons, et aussi pour sa particularité RGB.
L’ayant reçu il ne restait plus qu’à le programmer.
Pour le programme, on utilise la librairie FastLed qui a pour but de simplifier la programmation des rubans LED afin d’éviter d’avoir à écrire une ligne par LED, sachant que l’on a 180 LEDS au total.
Mais, au cours des différentes recherches pour trouver les différentes commandes de la librairie, nous avons rencontré de nombreuses difficultés dans le sens où la doc était pauvre en information et quelque peu cachée.
On a donc cherché un programme Arduino déjà écrit pour des rubans de LED avec cette librairie.
Par la suite on a su déchiffrer la plupart des commandes que nous cherchions en analysant le programme.
Il était temps pour la programmation !
Tous d’abord voici le plan de câblage utilisé :
PRGRLRGBPlan
N’importe qu’elle Carte Arduino peut être utilisé, dans notre cas nous utilisons une Arduino UNO.

On a commencé par une illumination assez basique, par exemple mettre le ruban de LED en Bleu.
Voici les premières lignes à introduire pour le bon fonctionnement des différentes commandes :


#include <FastLED.h>

#define LED_PIN 7
#define NUM_LEDS 180
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB

CRGB leds[NUM_LEDS];

void setup() {
delay(1000);
LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
FastLED.setBrightness(255);
}

LED_PIN le pin sur lequel vous avez connecté votre ruban de LED,
NUM_LEDS le nombre de LED de votre ruban et
LED_TYPE le type de LED que vous utiliser

Si vous avez envie de changer la luminosité, modifier le nombre se trouvant ici : FastLED.setBrightness(255);
Maintenant, placez dans la boucle "void loop" la commande suivante :

fill_solid(leds, 180, CRGB(0,0,255));
FastLED.show();

fill_solid = on peut comprendre remplir à l'état solide
180 = nombre de leds en partant de l'alimentation
CRGB = Couleur de type RGB
(0,0,255) = le code couleur RGB pour le bleu
sans oublier le ; à la fin et
FastLED.show() pour afficher le tous, comprendre : appliquer le tous

Voila le ruban est désormais éclairé en Bleu !

Maintenant, en Arc-en-ciel, la commande est la suivante :

fill_rainbow(leds, 57, 127);
FastLED.show();

fill_rainbow = on peut comprendre remplir à l'état Arc-en-Ciel
57 = nombre de leds en partant de l'alimentation
127 = Position de l'arc-en-ciel (si vous comprenez pas, c'est pas important)
sans oublier le ;

Et voila un ruban de LED de couleur Arc-en-ciel !

Maintenant, la partie un peu plus compliquée. Nous allons faire un ruban de LEDS arc-en-ciel qui défile.
Incroyable !
Nous allons donc nous servir des boucles. En particulier de la boucle "for"
La commande est la suivante :

for(int i=0;i<255;i++){
fill_rainbow(leds, 57, i);
FastLED.show();
delay(5);
}

for(int=0;i<255;i++) = recommencer la boucle jusqu’à que la variable de type intégrer soit égal à 255,
tout en ajoutant +1 à chaque boucle à la variable i
fill_rainbow = on peut comprendre remplir à l'état Arc-en-Ciel
180 = nombre de LEDS en partant de l'alimentation
i = la variable i qui va varier entre 0 et 255 alias position de l'arc-en-ciel

Et voila un ruban de LED arc-en-ciel défilant !

Par la suite vous pouvez combiner le tout pour faire par exemple cela :

void loop()
{
fill_solid(leds, 180, CRGB(255,0,0));
fill_solid(leds, 130, CRGB(255,255,255));
for(int i=0;i<255;i++){
fill_rainbow(leds, 57, i);
FastLED.show();
delay(5);
}
FastLED.show();
}

Qui affiche en partant de l'alimentation :

  • 57 LED en arc-en-ciel défilant
  • 73 LED de couleur blanc ou orange selon votre LED
  • 50 LED de couleur Rouge

Voila, j’espère que cet article vous aura été utile, si vous avez la moindre question n’hésitez pas.