Les rubans de LED sont constitués d’une succession de LED RGB adressables, c’est à dire que l’on peut définir la luminosité et la couleur de chaque LED indépendamment. Il existe plusieurs modèles de ruban : couleurs unique, non-adressable, 5 ou 12V, etc. Faites attention au modèle que vous voulez utiliser.
Matériel
- Ordinateur
- Arduino UNO
- Câble USB A Mâle/B Mâle
- Ruban de LED WS2812b
Schéma
Le ruban de LED utilise une broche PWM du microcontrôleur pour déterminer la couleur, l’intensité et la LED à allumer. Veillez à utiliser une alimentation externe pour alimenter les LED. En effet, un ruban de LED peut être très gourmand en courant surtout si il est long et si plusieurs ruban sont alimentés en série. Pour un ruban de LED WS2812B, il faut compter 50mA par LED soit 2.5A pour 50 LED. Vérifiez bien le nombre et le type de LED que vous souhaitez éclairer afin de choisir au mieux la source de tension.
Code
Plusieurs librairies peuvent être utilisées selon la marque du ruban de LED comme Adafruit_NeoPixel ou PololuLedStrip. Dans ce tutoriel nous utilisons la librairie FastLED.h. Pour initialiser la librairie, il vous faut préciser le type et le nombre de LED utilisées ainsi que l’ordre des couleurs (Rouge,Vert,Bleu) qui peuvent être différents selon les modèles de ruban.
Une fois l’objet initialisé, il est possible d’accéder à chaque LED via le tableau led. Il est possible de définir la couleur et l’intensité lumineuse de la LED i à l’aide la fonction led[i].setRGB() puis en validant avec la fonction FastLED.show().
//Libraries #include <FastLED.h>//https://github.com/FastLED/FastLED //Constants #define NUM_STRIPS 1 #define NUM_LEDS 60 #define BRIGHTNESS 10 #define LED_TYPE WS2812B #define COLOR_ORDER BRG//RGB #define FASTLED_ALLOW_INTERRUPTS 0 #define FASTLED_INTERRUPT_RETRY_COUNT 1 #define FRAMES_PER_SECOND 60 #define COOLING 55 #define SPARKING 120 //Parameters const int stripPin = 3; //Variables bool gReverseDirection = false; //Objects CRGB leds[NUM_LEDS]; void setup() { //Init Serial USB Serial.begin(9600); Serial.println(F("Initialize System")); //Init led strips FastLED.addLeds<LED_TYPE, stripPin, COLOR_ORDER>(leds, NUM_LEDS); FastLED.setBrightness( BRIGHTNESS ); } void loop() { ledScenario(); } void ledScenario(void ) { /* function ledScenario */ ////LEDS Strip scenario for (int i = 0; i < NUM_LEDS; i++) { //leds[i] = CRGB::Goldenrod; leds[i].setRGB(255, 0, 255); leds[i + 3].setRGB(255, 0, 255); FastLED.show(); delay(100); leds[i] = CRGB::Black; FastLED.show(); delay(100); } }
Applications
- Créer une ambiance lumineuse dans votre appartement
- Créer une lampe qui change de lumière en fonction de la musique
Sources
- Modifiez la couleur d’une LED RGB
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/pololu/pololu-led-strip-arduino
- https://github.com/FastLED/FastLED
Retrouvez nos tutoriels et d’autres exemples dans notre générateur automatique de code
La Programmerie
Bonjour, je cherche à faire un logo animé (changement de couleur style chenillard) avec environ 50 chips led WS2812E.
Par exemple, les 25 premiers chips en dégradé de rouge à orange, les 25 suivants en dégradé du bleu au vert; l’ensemble rouge orange tournant en chenillard, ne se mélangeant pas avec les bleu vert.
Merci de me faire un tuto, même succinct, de cette idée lumineuse.
« Pourriez-vous m’aider à réaliser cette animation lumineuse ? » ou encore « N’ayant pas les compétences pour réaliser une telle animation, pourriez-vous me guider dans une telle réalisation s’il)-vous-plait ? »
Jsais pas, mettez un minimum les formes, si vous ne voulez pas faire l’effort de chercher vous même sur les internets… C’est déjà sympa de proposer ce genre d’articles, boutique ou pas…
Bonjour, je cherche à relier un détecteur sonore à un ruban LED connecté pour pouoir associer chaque son à une couleur afin d’aider une personne malentedante ( par exemple : couleur jaune = reveil, rouge = alarme incendie, bleu= sonnerie porte; violet = bip micro-onde ou four…)
Je ne sais pas comment m’y prendre.
Merci de me répondre.
Bonjour,
l’Arduino ne peut détecter que des niveaux sonore.
Si les niveaux ne sont pas assez distincts, je pense qu’il faut une analyse du son plus poussée.
Avec un Raspberry Pi par exemple ou un ESP32
Sinon il faut brancher physiquement les appareils au microcontrôleur
Bonjour,
Sur des leds adressables, l’alimentation est externe et l’on commande la couleur avec Arduino ?
Mais est-ce que les leds restent toujours sous tension et l’on éteint éclair via la commande Arduino ?
Bonjour, s’il n’y a pas de gestion de l’alimentation. les leds restent sous tension mais éteintes.
Bonjour je cherche à modifier la luminausité d’une bande led WS2812. Je veux utiliser l’exemple PRIDE qui est disponible dans la librairie FastLed.
Quand je modifie bêtement BRITHGNESS, rien ne fonctionne
comment modifiez-vous brightness? rien ne fonctionne veut dire que le code ne fonctionne plus?
Bonjour , je suis totalement néophyte dans l arduino et la programmation mais je suis volontaire pour apprendre et ce que vous faites me semble correspondre à mon envie .
Je fais des piluliers pour 320 personnes qui sont réparties en une vingtaine de secteurs et je cherche donc à trouver facilement les bacs de ces 320 personnes où sont rangés leurs médicaments . Evidemment les bacs ne sont pas rangés par ordre alphabétique … je souhaiterai en tapant le nom de la personne sur un ordinateur que l’arduino allume une LED pour me signaler où est le bac . J imagine qu’avec un ruban adressable ca sera plus facile qu avec des LED seules… donc votre exemple me rapproche de mon envie . Peut être qu’un arduino Mega sera plus approprié ? ( plus de sorties) .
Voyez vous la possibilité de faire cela ?
Autre petit souci quand une personne decede cela décale les bacs des autres personnes , ca aurait trop facile autrement !!!
J’ai cherché un peu beaucoup et je pense être au bon endroit sur ce tutoriel .
Evidemment mes achats se feront sur votre boutique en fonction de vos recommandations .
Un grand merci pour toutes vos réponses
Bonjour,
chouette projet. Où êtes-vous basé?
Pour ce nombre de LEDs, vous pouvez utiliser nano, uno ou esp32.
il faudrait renseigner un tableau de string contenant les noms des patients. à chaque noms correspond une adresse de LED.
Si vous effacer un nom de la liste, les adresses des LED sont décalées naturellement.
Pour entrer le nom d’un patient vous pourriez utiliser le moniteur série
et utiliser un timer pour éteindre la led au bout d’un certain temps