SOMMAIRE ►
L’éclairage automatique de l’escalier par Arduino avec une bande adressable ws2812b est un projet simple qui peut transformer l’intérieur de votre maison pour le meilleur. Notre version de ce projet de bricolage populaire comprend un schéma de câblage simple et un programme. Des détecteurs de mouvement ou des capteurs de distance à ultrasons peuvent être utilisés pour allumer automatiquement les lumières de l’escalier NeoPixel ws2812b.
Arduino eclairage escalier ruban led NeoPixel
Les lumières de l’escalier utilisent chacune deux LED NeoPixel ws2812b (le nombre peut être augmenté), de sorte qu’une alimentation de 5 volts à puissance minimale peut être utilisée pour éclairer l’escalier. Un interrupteur permet d’activer le « mode nuit », dans lequel l’escalier sera toujours éclairé avec la luminosité minimale réglée. Voici le schéma de l’escalier intelligent sur Arduino Nano (Arduino Uno) et le firmware de travail pour le microcontrôleur.
Ce dont vous aurez besoin
- Arduino Uno / Arduino Nano / Arduino Mega
- ruban led ws2812b
- capteurs de ultrason HC-SR04
- capteurs de mouvement
- interrupteur
- fils de connexion;
- librairies Ultrasonic.h et Adafruit_NeoPixel.h
Matériel supplémentaire sur ce sujet:
Eclairage escalier ruban led et détecteur ultrason

La première version du programme d’éclairage intelligent de l’escalier utilise les capteurs de distance ultrasoniques HC-SR04 Arduino pour indiquer les mouvements. Tous les réglages qui peuvent être effectués dans le code, même sans connaissance de la programmation Arduino de base – sont situés au début du programme. Mais si vous modifiez le nombre de DEL placées sur un étage, vous devrez apporter des modifications mineures au code.
Programme ruban led escalier avec détecteur HC-SR04
#include "Ultrasonic.h" #include "Adafruit_NeoPixel.h" #define ESCALIER 6 #define LED 2 #define PIN_LED 3 #define PIN_VKL 9 #define TIMER 5 #define MAX_BRIGHT 200 #define MIN_BRIGHT 10 #define DIST1 50 #define DIST2 50 Ultrasonic ultrasonic1(15, 14); Ultrasonic ultrasonic2(19, 18); int NUM_LED = ESCALIER * LED; Adafruit_NeoPixel strip (NUM_LED, PIN_LED, NEO_GRB + NEO_KHZ800); int cm1, cm2, t, i, j, g, J; byte w; void setup() { Serial.begin(9600); pinMode (PIN_VKL, INPUT); strip.begin(); strip.show(); strip.setBrightness(MAX_BRIGHT); } void u1() { for (byte i = 0; i <= 3; i++) { cm1 = ultrasonic1.Ranging(CM); cm1 = cm1 + cm1; delay(10); } cm1 = cm1 / 3; Serial.print("U1 - "); Serial.println(cm1); } void u2() { for (byte i = 0; i <= 3; i++) { cm2 = ultrasonic2.Ranging(CM); cm2 = cm2 + cm2; delay(10); } cm2 = cm2 / 3; Serial.print("U2 - "); Serial.println(cm2); } void loop() { if (digitalRead(PIN_VKL) == HIGH) { J = 0; } if (digitalRead(PIN_VKL) == LOW) { J = MIN_BRIGHT; } for (i = 0; i <= NUM_LED; i++) { strip.setPixelColor(i, strip.Color(J, J, J * 2)); strip.show(); } u1(); delay(100); u2(); delay(100); if (cm1 < DIST1) { w = 1; } if (cm2 < DIST2) { w = 2; } while (w == 1) { for (i = 0; i <= NUM_LED + 1; i = i + LED) { for (j = J; j <= 125; j++) { strip.setPixelColor(i, strip.Color(j, j, j * 2)); strip.setPixelColor(i + 1, strip.Color(j, j, j * 2)); strip.show(); delay(TIMER); } delay(100); } w = 5; } while (w == 2) { for (i = NUM_LED + 1; i >= 0; i = i - LED) { for (j = J; j <= 160; j++) { strip.setPixelColor(i, strip.Color(j, j, j * 2)); strip.setPixelColor(i - 1, strip.Color(j, j, j * 2)); strip.show(); delay(TIMER); } delay(100); } w = 5; } while (w == 5) { for (j = 124; j >= J; j = j - 2) { for (i = 0; i <= NUM_LED; i++) { strip.setPixelColor(i, strip.Color(j, j, j * 2 )); strip.show(); } u1(); delay(j / 4); u2(); delay(j / 4); if (cm1 < DIST1) { w = 3; goto w3; } if (cm2 < DIST2) { w = 4; goto w4; } } w = 0; } while (w == 3) { w3: t = map (j, 10, 125, 20, 0); for (i = 0; i <= NUM_LED + 1; i = i + LED) { for (g = j; g >= J; g--) { strip.setPixelColor(i, strip.Color(g, g, g * 2)); strip.setPixelColor(i + 1, strip.Color(g, g, g * 2)); strip.show(); delay(TIMER + t / 2); } delay(100); } w = 0; } while (w == 4) { w4: t = map (j, 10, 125, 20, 0); for (i = NUM_LED + 1; i >= 0; i = i - LED) { for (g = j; g >= J; g--) { strip.setPixelColor(i, strip.Color(g, g, g * 2)); strip.setPixelColor(i - 1, strip.Color(g, g, g * 2)); strip.show(); delay(TIMER + t / 2); } delay(100); } w = 0; } }
Explication du code pour eclairage escalier progressif:
- au début du programme, vous pouvez spécifier le nombre de marches de l’escalier, la vitesse du rétro-éclairage et définir la luminosité minimale de l’éclairage;
- il est préférable d’utiliser des capteurs à ultrasons dans le circuit, par opposition aux capteurs de mouvement. Avec eux, vous pouvez modifier la distance de déclenchement du rétroéclairage dans le logiciel et prendre plusieurs mesures pour éliminer les erreurs.
Eclairage escalier ruban led et détecteur mouvement

Programme Arduino ruban led escalier avec détecteur
#include "Adafruit_NeoPixel.h" #define ESCALIER 6 #define LED 2 #define PIN_LED 3 #define PIN_VKL 9 #define PIN_PIR1 15 #define PIN_PIR2 19 #define TIMER 5 #define MAX_BRIGHT 200 #define MIN_BRIGHT 10 int NUM_LED = ESCALIER * LED; Adafruit_NeoPixel strip (NUM_LED, PIN_LED, NEO_GRB + NEO_KHZ800); int t, i, j, g, J; byte w; void setup() { strip.begin(); strip.show(); strip.setBrightness(MAX_BRIGHT); pinMode (PIN_VKL, INPUT); pinMode (PIN_PIR1, INPUT); pinMode (PIN_PIR2, INPUT); } void loop() { if (digitalRead(PIN_VKL) == HIGH) { J = 0; } if (digitalRead(PIN_VKL) == LOW) { J = MIN_BRIGHT; } for (i = 0; i <= NUM_LED; i++) { strip.setPixelColor(i, strip.Color(J, J, J * 2)); strip.show(); } if (digitalRead(PIN_PIR1) == HIGH) { w = 1; } delay(100); if (digitalRead(PIN_PIR2) == HIGH) { w = 2; } delay(100); while (w == 1) { for (i = 0; i <= NUM_LED + 1; i = i + LED) { for (j = J; j <= 125; j++) { strip.setPixelColor(i, strip.Color(j, j, j * 2)); strip.setPixelColor(i + 1, strip.Color(j, j, j * 2)); strip.show(); delay(TIMER); } delay(100); } w = 5; } while (w == 2) { for (i = NUM_LED + 1; i >= 0; i = i - LED) { for (j = J; j <= 160; j++) { strip.setPixelColor(i, strip.Color(j, j, j * 2)); strip.setPixelColor(i - 1, strip.Color(j, j, j * 2)); strip.show(); delay(TIMER); } delay(100); } w = 5; } while (w == 5) { for (j = 124; j >= J; j--) { for (i = 0; i <= NUM_LED; i++) { strip.setPixelColor(i, strip.Color(j, j, j * 2 )); strip.show(); } if (digitalRead(PIN_PIR1) == HIGH) { w = 3; goto w3; } delay(TIMER + j / 2); if (digitalRead(PIN_PIR2) == HIGH) { w = 4; goto w4; } delay(TIMER + j / 2); } w = 0; } while (w == 3) { w3: t = map (j, 10, 125, 20, 0); for (i = 0; i <= NUM_LED + 1; i = i + LED) { for (g = j; g >= J; g--) { strip.setPixelColor(i, strip.Color(g, g, g * 2)); strip.setPixelColor(i + 1, strip.Color(g, g, g * 2)); strip.show(); delay(TIMER + t / 2); } delay(100); } w = 0; } while (w == 4) { w4: t = map (j, 10, 125, 20, 0); for (i = NUM_LED + 1; i >= 0; i = i - LED) { for (g = j; g >= J; g--) { strip.setPixelColor(i, strip.Color(g, g, g * 2)); strip.setPixelColor(i - 1, strip.Color(g, g, g * 2)); strip.show(); delay(TIMER + t / 2); } delay(100); } w = 0; } }
Explication du code pour escalier éclairé par ruban LED:
- vous pouvez aussi spécifier votre propre couleur pour la bande d’adresse dans void setup(), la couleur par défaut est bleuâtre;
- les capteurs de mouvement peuvent être remplacés par des capteurs d’obstacles (KY-032 Arduino) sans changer le circuit et le firmware du microcontrôleur.
Conclusion. Pour créer un éclairage intelligent d’un escalier de vos propres mains sur un Arduino, il existe de nombreuses variantes de la conception. Dans notre cas, la plupart des paramètres sont définis uniquement dans le logiciel, ce qui simplifie grandement la mise en page et le firmware du projet de bricolage, et changer la couleur ou même transformer la lumière de l’escalier en une lumière de Noël Arduino ne nous a pas semblé approprié.








Laisser un commentaire