Led Wars : La Revanche du Ruban de LED

Présentation

L’objectif est de réaliser divers animation avec un ruban de LED RGB .

Matériel Nécessaire

– Un ruban de LED de référence WS2811B SMD5050, de 150 LED, de 5
mètres de long à un prix d’environ 19 €.

La  LED RGB WS2812 utiliser sur le ruban de LED à une capacité de 16
777 216 couleurs affichable grâce au 3 leds (Rouge, Vert, Bleu) et
256 niveau de luminosités. Elle sont piloter numériquement à l’aide
d’un seul fil.

Par ailleurs 3 LED : rouge, vert, bleu et un contrôleur numérique qui
les pilotes sont intégrées dans la LED RGB WS2812.

– Une alimentation de puissance 50W, de tension 5V et de courant 10A
par exemple la MeanWell RS-50-5 d’un prix d’environ 15 €

– Un Arduino Uno d’un prix d’environ 20 €

– Un ancienne alimentation de PC enlevée de sa carte électronique

– Un cordon d’alimentation de PC

– Un câble USB pour connecter l’Arduino et le PC

– Un cordon d’alimentation pour alimenter l’Arduino

– Un cordon permettant de connecter le ruban de led à l’alimentation
et l’Arduino

Outillage nécessaire

– Un tournevis cruciforme

Câblage

Il existe deux configuration possible :

– Câblage en fonctionnement autonome, utiliser lors de l’usage normale
du Ruban de LED RGB
– Câblage connecter à l’ordinateur, utiliser pour développez le
programme sur l’IDE Arduino

Câblage en fonctionnement autonome

En mode autonome, l’Arduino est indépendant et utilise la même
alimentation que le ruban de LED RGB.

L’alimentation 230 V vers 5 V est intégré dans le boîtier d’une ancienne
alimentation de PC.

Le fil ou transite les donnée numérique pour piloter les LEDS du ruban
de LED RGB est branchée sur l’entrée 6 de l’Arduino. Il faudra
configurer la même entrée durant la phase de développement du programme.

Câblage en mode de connection avec le PC

En mode de connection avec le PC, l’Arduino utilise l’alimentation du PC
et sont programme peut être mis à jour.

Développement du programme

Pour développer le programme gérant l’animation du ruban de led vous
devez avoir deux chose : l’IDE Arduino ainsi que la bibliothèque
Adafruit NeoPixel.

Installation de l’éditeur Arduino

 Sous Debian

Pour installe l’IDE Arduino sous Debian GNU/Linux, ouvrer un terminale,
loguer vous en root :

$ su

Puis installer le paquet Arduino avec l’utilitaire `apt` via la commande
:

# apt-get install arduino

 Sous Windows

Rendez-vous sur la page de téléchargement de l’éditeur de programme Arduino.

Puis cliquer sur Windows Installer pour télécharger le programme
d’installation.

Une fois télécharger vous n’avez plus que à lancer le programme
d’installation.

Installation de la librairie Adafruit NeoPixel

Vous pouvez soit télécharger la librairie directement sur internet.
Décompresser l’archive. Renommer le dossier `Adafruit_NeoPixel-master`
en `Adafruit_NeoPixel`, puis copier le dossier dans le dossier
`~/sketchbook/libraries`.

Ou récupérer la librairie directement dans le dossier `librairie` du
répertoire source de cette documentation et le copier dans le dossier
`~/sketchbook/libraries`.

Vous pouver aussi directement le faire en ligne de commande.

En téléchargent sur le site :

$ wget https://github.com/adafruit/Adafruit_NeoPixel/archive/master.zip

$ unzip master.zip

$ mv Adafruit_NeoPixel-master/ ~/sketchbook/libraries/Adafruit_NeoPixel

Structure de base du programme

Voici la structure de base du programme qui gère le ruban de LED.

#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED

#define PIXEL_PIN 6 // On définit le pin où est connecté la patte DATA du bandeau
#define PIXEL_COUNT 150 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50

Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban

void setup() {
strip.begin(); // Lance la connection
strip.show(); // Initialise toute les led à 'off'
}

/* Définition des couleurs */
int RED[3] = {255, 0, 0}; // Couleur Rouge
int GREEN[3] = {0, 255, 0}; // Couleur Verte
int CYAN[3] = {0, 255, 255}; // Couleur Cyan
int YELLOW[3] = {255, 125, 0}; // Couleur Jaune
int ORANGE[3] = {255, 40, 0}; // Couleur Orange
int PURPLE[3] = {255, 0 , 255}; // Couleur Violette
int PINK[3] = {255, 0, 100}; // Couleur Rose
int BLUE[3] = {0, 0, 255}; // Couleur Bleu
int WHITE[3] = {255, 255, 255}; // Couleur Blanche
int OFF[3] = {0, 0, 0}; // Éteint

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
}

Allumer toutes les led d’une même couleur

Voici la fonction pour allumer toute les leds d’une même couleur.

void allLeds(int COLOR[])
{
for(int i = 0 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.show();
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en argument de la fonction la couleur que vous
souhaiter utiliser.

Par exemple ci dessous j’ai allumer toute les led du ruban de la couleur
rouge. Je passe pour cela en argument le tableau RED à la fonction
`allLeds`.

void loop() {
strip.brightismes(100); // Règle la luminosité à 100 % de la luminosité maximale
allLeds(RED[]);
}

Allumer le ruban de LED moitiée d’une couleur, moitiée d’une autre

Voici la fonction pour allumer le ruban de LED moitiée d’une couleur,
moitiée d’une autre.

void allBicolor(int COLOR_LEFT[], int COLOR_RIGHT[])
{
for(int i = 0 ; i < PIXEL_COUNT/2 ; i++)
{
strip.setPixelColor(i, COLOR_LEFT[0], COLOR_LEFT[1], COLOR_LEFT[2]);
}

for(int i = PIXEL_COUNT/2 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR_RIGHT[0], COLOR_RIGHT[1], COLOR_RIGHT[2]);
}
strip.show();
}

 

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction la couleur de la
première moitiée du ruban de LED, et la couleur de la seconde moitiée du
ruban de LED.

Par exemple ci dessous j’ai allumer la moitiée du ruban de couleur cyan
et l’autre moitiée de couleur bleu.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
allBicolor(CYAN,BLUE);
}

Allumer le ruban de LED d’une couleur de façon progressive

Voici la fonction pour allumer le ruban de LED d’une couleur de façon
progressive.

void progressiveUp(int temps, int COLOR[])
{
for(int lumi = 0 ; lumi < 100 ; lumi++)
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.setBrightness(lumi);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction la couleur du ruban de
LED, et le temps entre les différent pallié de luminosité.

Par exemple ci dessous j’ai allumé le ruban de LED de couleur bleu avec
une durée de 10 ms par pallié de luminosité.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
progressiveUp(10, BLUE);
}

Variation progressive d’une couleur à une autre

Voici la fonction pour faire varier le ruban d’une couleur à une autre.

void changeColor(int temps, int colorDebut[3], int colorFin[3])
{

int color[3] = {0};

color[0] = colorDebut[0];
color[1] = colorDebut[1];
color[2] = colorDebut[2];

while(color[0] != colorFin[0] || color[1] != colorFin[1] || color[2] != colorFin[2])
{

if(color[0] > colorFin[0])
{
color[0]--;
}
else if(color[0] < colorFin[0])
{
color[0]++;
}

if(color[1] > colorFin[1])
{
color[1]--;
}
else if(color[1] < colorFin[1])
{
color[1]++;
}

if(color[2] > colorFin[2])
{
color[2]--;
}
else if(color[2] < colorFin[2])
{
color[2]++;
}

delay(temps);
allLeds(color);
}
}

 

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de la
variation, la couleur de départ, la couleur d’arrivée.

Par exemple ci dessous le ruban de LED varie de la couleur bleu à la
couleur rouge par paliée d’une durée de 10 ms.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
changeColor(10, BLUE, RED);
}

Faire déplacer une LED le long du fil

Voici la fonction pour faire déplacer une LED le long du fil.

void ledUp(int temps, int color[3])
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, color[0], color[1], color[2]);
strip.show();
strip.setPixelColor(i, 0, 0, 0);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de l’effet
ainsi que sa couleur.

void loop() {
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
ledUp(20, RED);
}

Faire allumée progressivement châque LED en mode chenillard

Voici la fonction pour faire allumée progressivement châque LED en mode
chenillard.

void chenillardUp(int temps, int color[3])
{
for(int i = 0 ; i < 150 ; i++)
{
strip.setPixelColor(i, color[0], color[1], color[2]);
strip.show();
delay(temps);
}
}

Puis vous n’avez plus qu’à l’appeler dans la boucle principal du
programme. Et passer en arguments de la fonction le temps de l’effet
ainsi que sa couleur.

void loop() {
allLeds(OFF);
strip.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
chenillardUp(10, GREEN);
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *