Créer une horloge colorée avec des LED WS2812B
Une Création de dans les catégories Art, Bien-être & Santé, Décoration, Électronique, Maison, Projet de Groupe. Dernière modification le 16/11/2023 par Sgiraud.
Grâce à une bande LED RGB, créer une horloge colorée et bien plus...
Introduction
Les bandes LED WS2812B sont belles et pratiques. Chaque LED est adressable individuellement et peut prendre n'importe quelle couleur. De quoi créer des objets lumineux dynamiques, très beaux et laisser libre cours à l'imagination. On commence par une horloge.
Liste des matériaux
Liste des outils
Etape n°1 - le code
Pas de difficulté pour le cablage: 1 seul PIn en sortie est utilisé grâce au registre à décalage du WS2812B.
On utilise la librairie FASTLed.fr.
- include <FastLED.h>
- define RGB_PIN 6 // LED DATA PIN
- define RGB_LED_NUM 15 // 10 LEDs [0...9]
- define BRIGHTNESS 200 // brightness range [0..255]
- define CHIP_SET WS2812B // types of RGB LEDs
- define COLOR_CODE GRB //sequence of colors in data stream
// Define the array of LEDs CRGB LEDs[RGB_LED_NUM];
void setup() {
FastLED.addLeds<CHIP_SET, RGB_PIN, COLOR_CODE>(LEDs, RGB_LED_NUM); FastLED.setBrightness(BRIGHTNESS); FastLED.setMaxPowerInVoltsAndMilliamps(5, 500); FastLED.clear();
}
void loop() {
// clock only while (true) {tic_toc_color();}
}
void tic_toc_color(void) {
for (int hour = 5; hour < 23; hour++) { for (int minute = 0; minute < 59; minute++) { // seconds for (int sec = 0; sec < 59; sec++) { // Red Green background for (int j = 0; j < RGB_LED_NUM; j++) { LEDs[j] = CRGB(255 - (j*255/RGB_LED_NUM), (j*255/RGB_LED_NUM), 0 ); }
// hours LEDs[int(hour*RGB_LED_NUM/23)] = CRGB(200, 0, 200 ); // minutes LEDs[int(minute*RGB_LED_NUM/59)] = CRGB(100, 100, 200 );
// seconds blue LEDs[int(sec*RGB_LED_NUM/59)] = CRGB(0, 0, 255 ); //if (i > 0) {LEDs[i-1] = CRGB(0, 0, 0 );} FastLED.show(); delay(1000); } // seconds } // minute } // hour
}
Fini!
Etape n°2 - Le 1er résultat
Avec une bande de seulement 15 LED:
- En violet: les heures
- En bleu clair (un peu rosé): les minutes
- En bleu: les secondes
- Le fond: un dégradé du rouge au vert en passant par orange et jaune
Etape n°3 - En cercle
La lumière vient du reflet sur une surface blanche. En vitesse normale, les secondes en bleu font le tour en 1 minute.
La vidéo sature trop. En réalité, il n'y a pas de zones blanches.
Etape n°4 - Ajout d'un filtre
Le filtre réduit la saturation tout en ajoutant du flou autour des leds.
Il faut maintenant :
- proposer des design sympas.
- et aussi trouver comme régler l'heure de manière intuitive et cool !
Des idées ?
Notes et références
des exemples:
https://www.makerguides.com/how-to-control-ws2812b-individually-addressable-leds-using-arduino/
https://www.electroniclinic.com/arduino-ws2812b-led-strip-connection-and-code/