Utiliser une led WS2812b avec l’Arduino
Alors,… illuminer une led WS2812b avec l’Arduino
Pourquoi ? Parce que c’est joli, parce que je n’avais pas encore ce composant, parce que je pense que se sera les “leds” de demain, du moins les rubans led de demain.
Allumer un ruban de leds simple c’est une chose, allumer un ruban de leds RGB c’est une autre chose. Mais avec les leds WS2812(b) on peu illuminer un ruban, led après led. Pour créer une “animation” par exemple.
Mes leds n’étant pas montées sur PCB, j’ai du le faire moi même.
Montage d’une led ws2812b sur pcb
1. On soude quelques fils de cuivre à la led
2. Ça fais une jolie petite bête
La suivante c’est un gif, cliquez pour visualiser.
3. On prépare les “pins”
4. On soude le tout sur un morceau de pcb a pastille
5. On plug sur la platine d’essai!
Branchement
+5V -> +5V de l’Arduino
Din -> Pin 6 de l’Arduino
GND -> GND de l’Arduino
Comment installer la librairie Arduino ws2812b
Tout d’abord télécharger la librairie FastLed en cliquant sur le lien suivant.
Lien vers les dernières release
- Allez dans votre dossier de téléchargement
- Dézippez l’archive nommée: FastLED-x.x.x.
- Copiez le premier dossier a l’intérieur du dossier FastLED-x.x.x.
- Collez-le dans Documents > Arduino > Librairies.
Code Arduino pour LED ws2812b
Une fois la librairie installée, explorez les fichiers d’exemples dans: fichiers -> exemples -> Fastled.
Pour ce qui est de l’utilisation, la librairie FastLed est juste une tuerie.
On défini le nombre de led, et la pin sur lequel est connecté le Din. Dans ce cas-ci une seule.
#include "FastLED.h"
// Combien de led sur le ruban ?
#define NUM_LEDS 1
//Pour les led style Neopixels qui n'ont que 3 lignes (data, gnd et vcc),
//il n'y a qu'a définir le data pin (Le clock_pin n'étant pas nécéssaire)
//Pour les led style LPD8806 il faut définir DATA_PIN et CLOCK_PIN.
#define DATA_PIN 6
#define CLOCK_PIN 13
// Define the array of leds
CRGB leds[NUM_LEDS];
void setup() {
// Uncomment/edit one of the following lines for your leds arrangement.
// FastLED.addLeds<TM1803, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1804, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<TM1809, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2812B, DATA_PIN, RGB>(leds, NUM_LEDS);
FastLED.addLeds<NEOPIXEL, DATA_PIN>(leds, NUM_LEDS);
// FastLED.addLeds<APA104, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<UCS1903B, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<GW6205_400, DATA_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<WS2801, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<SM16716, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<LPD8806, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<P9813, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<APA102, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
// FastLED.addLeds<DOTSTAR, DATA_PIN, CLOCK_PIN, RGB>(leds, NUM_LEDS);
}
void loop() {
// Turn the LED on, then pause
leds[0] = CRGB::Red;
FastLED.show();
delay(500);
// Now turn the LED off, then pause
leds[0] = CRGB::Blue;
FastLED.show();
delay(500);
}












0 commentaires