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