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.
Allumer toutes les led d’une même couleur
Voici la fonction pour allumer toute les leds d’une même couleur.
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`.
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.
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.
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.
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é.
Variation progressive d’une couleur à une autre
Voici la fonction pour faire varier le ruban d’une couleur à une autre.
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.
Faire déplacer une LED le long du fil
Voici la fonction pour faire déplacer une LED le long du fil.
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.
Faire allumée progressivement châque LED en mode chenillard
Voici la fonction pour faire allumée progressivement châque LED en mode
chenillard.
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.
Salut. Très bien ce tuto, je ne connais pas encore Arduino mais j’ai de bonnes bases en codage et un peu en électronique, en te lisant, ça me donne envie de m’y mettre.
Juste deux questions :
– n’y aurait-il pas une micro coquille, en fait tu connectes l’entrée numérique du ruban sur la sortie numérique N°6 et non l’entrée 6 sauf si j’ai loupé quelque-chose.
– dans cette configuration, penses-tu qu’il est possible d’utiliser le controleur pour d’autres travaux dans la boucle? Je veux dire, le code semble utiliser un timer, peut-être qu’il peut travailler sans saccade même si la carte gère des capteurs ou communique via un réseau. Je ne connais pas grand chose encore, mais j’hésite entre prendre un arduino MEGA pour gérer plein de capteurs et un éclairage sympa ou multiplier les petits arduinos
N’y aurait-il pas une micro coquille, en fait tu connectes l’entrée numérique du ruban sur la sortie numérique N°6 et non l’entrée 6 sauf si j’ai loupé quelque-chose ?
Non c’est bien la sortie digital numéro 6 déclarer par la ligne :
#define PIXEL_PIN 6
En fait la pin 6 peut être définie en entrée ou en sortie.
Dans cette configuration, penses-tu qu’il est possible d’utiliser le controleur pour d’autres travaux dans la boucle ?
Honnêtement, j’ai pas tester. Sa serai intéressant de voir cela surtout pour après contrôler le ruban de led à travers un site web.
Bonjour,
J’essaie de faire progressivement changer de couleur ma guirlande LED mais le logiciel Arduino m’indique : ‘allLeds’ was not declared in this scope.
Je ne sais pas où se situe mon ou mes erreur(s), je n’y connais rien. Pourriez-vous m’aider ?
Vous avez bien déclarer la fonction allLeds comme cela dans votre code ?
void allLeds(int COLOR[])
{
for(int i = 0 ; i < PIXEL_COUNT ; i++) { strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]); } strip.show(); }
Bonjour,
Pouvez-vous me dire ce qu’est la fonction allLeds ?
Merci
La fonction allLeds c’est le code ci dessous elle permet d’allumer toute les leds de la même couleur. Par exemple pour allumer toute les led de la couleur rouge il faudra passer RED à allLeds soit allLeds(RED); ce qui allumera toute les leds du ruban avec la couleur rouge :
void allLeds(int COLOR[])
{
for(int i = 0 ; i < PIXEL_COUNT ; i++)
{
strip.setPixelColor(i, COLOR[0], COLOR[1], COLOR[2]);
}
strip.show();
}
Une erreur dans l’appel de la routine “allLeds
void loop() {
strip.brightismes(100); // Règle la luminosité à 100 % de la luminosité maximale
allLeds( RED); // <— cette syntaxe fonctionne sans crochet
}
Exact merci pour cette correction !
Bonjour
Je cherche à allumer certaines LED les unes après les autres.
(Quand une s’allume la précédente s’éteint …)
Est-ce quelqu’un a une idée de programmation ?
Merci
Un chenillard de LED ?
Bonjour, je débute dans le pilotage led à trois fils, je suis tomber sur ce tuto en cherchant un effet flamme pour un luminaire en forme de montgolfière. j’essaye de réduire au maximum la taille de la carte de pilotage, ça fonctionnerai avec une Adafruit FLORA v3 ?
Effectivement la Adafruit Flora utilise la LED RGB WS2812 comme le ruban de led.
Il y a un manuel : https://cdn-learn.adafruit.com/downloads/pdf/getting-started-with-flora.pdf?timestamp=1561054971 et il utilise la librairie NeoPixel aussi.
Par contre il définisse qu’une seule LED au lieu des 150 LED présent sur le ruban.
Du coup j’ai acheté un pro trinket 16Mhz, par contre le ruban à 4 fils c’est une 3636 (deux pour alim et deux pour la commande) est ce qu’il faut connecter les deux fils de commande?
Merci pour ton tuto.
Il m’a permit de finaliser mon éclairage d’escaliers.
Lorsque je monte ou descends, chaque marche s’éclaire avec le chenillard puis s’éteins au bout de quelques secondes.
Totalement pourri ce tuto !
Un minimum d’organisation et de clarté est requis en programmation, ce qui fait terriblement défaut ici. Cela fait parti de la pédagogie. Certaines personnes sont excellentes dans leur domaine, mais parfaitement incapables de transmettre correctement leur savoir, ce qui dénote un manque de maîtrise de celui-ci à cause d’une trop grande proportion d’apprentissage par coeur là ou il aurait été nécessaire d’analyser au lieu de comprendre…
Nous sommes bien conscients que nous ne sommes pas des pros. Nous sommes “la Vilaine Bidouille”, et pas “les pédagogues super carrés”. Pas dit que nous arrivions à faire mieux la prochaine fois, mais en attendant, nous prenons du plaisir à ce que nous faisons.
Niko, ton diagnostic est exact. Nous avons cruellement besoin de gens comme toi : organisés avec de solides connaissances théorique et d’excellentes compétences techniques. Passe au Campus, on te paiera une galette-saucisse. Sérieux ! Tu es le bienvenu. On analysera des trucs ensemble. Sans les comprendre, c’est promis.
Merci pour votre vulgarisation des savoirs. Bravo ! Continuez.
Cher petit NiKo, ta réponse n’est qu’une pollution sur le net. La diplomatie te fait réellemet terriblement défaut. Tu ne semble être bon que pour rabaisser les autres pour rehausser ta très petite personne! Si seulement je pouvait considérer quelqu’un comme toi comme seulement inutile, mais non je considère que tu est une nuisance! Ce n’est pas mon habitude mais j’ai tenté de me rabaissé a ton niveau! Il me semble qu’il aurait été tellement plus constructif de proposer quelque chose, offrir de l’aide . De toute façon le tuto en question est une très bonne piste de départ et il faut bien que l’utilisateur ait un minimum de logique pour l’analyser et au pire poser des questions pour l’aider
Cher petit NiKo, ta réponse n’est qu’une pollution sur le net. La diplomatie te fait réellemet terriblement défaut. Tu ne semble être bon que pour rabaisser les autres pour rehausser ta très petite personne! Si seulement je pouvait considérer quelqu’un comme toi comme seulement inutile, mais non je considère que tu est une nuisance! Ce n’est pas mon habitude mais j’ai tenté de me rabaissé a ton niveau! Il me semble qu’il aurait été tellement plus constructif de proposer quelque chose, offrir de l’aide . De toute façon le tuto en question est une très bonne piste de départ et il faut bien que l’utilisateur ait un minimum de logique pour l’analyser et au pire poser des questions pour l’aider
Bonjour, déjà merci pour ce tuto.
Je débute alors j’essaye seulement d’allumer les led avec une seule couleur, mais quand j’écris la fonction allLeds celui ci ne prend pas de couleur particulière comme le loop, puis j’appelle la fonction dans le loop, et téléverse le programme mais aucune led ne s’allume, une idée ?
Merci d’avance.
bonjour
je n’arrive pas a comprendre comment faire pour ajouter au programme principale les options d’animations…. je ne suis pas un pro en programation 2 x void loop ! dans prog cela plante ,un exemple comprenant le principale et une option (chenillard) ecrit dans 1 meme programme me serait utile pour comprendre les modifs a faires.
cordialement merci
(ce tuto est vraiment interessant quand on maitrise la programation )
Il faut une seule fonction loop dans le programme Arduino.
Bonjour,
Merci pour ce tuto, vais l’utiliser dans un projet de dome pour RTI (Reflectance Transformation Imaging) ou le but est de faire des photos avec des leds blanches allumées progressivement comme un chenillard