Goedemorgen,
Ik ben een beginner als het gaat om programmeren, maar ben bezig om de trap in mijn huis te voorzien van LED verlichting.
De bedoeling is dat er zowel boven als onderaan de trap een sensor komt, zodra deze wordt geactiveerd moet de verlichting per trede aan gaan (dus als je omhoog loopt moet eerst de onderste trede aan gaan, als je naar beneden gaat moet eerst de bovenste trede aan gaan).
Elke trede moet een fade in en een fade out doen van een paar seconden.
Nu ben ik bezig om dit te programmeren, maar kom er niet helemaal uit en ik vroeg me af of jullie mij verder kunnen helpen.
1 strip een fade in en een fade out te laten doen is geen probleem, maar ik heb straks meerdere treden.
Ik heb mijn project tot nu toe bijgevoegd (grotendeels van voorbeelden op het internet).
Kan iemand mij vertellen hoe ik dit moet aanpassen zodat ik 1 loop kan gebruiken voor alle treden, en dus niet het stuk code voor de Fade in en Fade out X aantal keer moet kopiëren?
Ik heb bovenin de code al wat integers toegevoegd die ik denk nodig te hebben, maar weet niet of dit klopt...
#include <Adafruit_NeoPixel.h>
// totaal aantal treden
int treden = 2;
// definieer pwm pin per trede
int Trede1 = 5;
int Trede2 = 6;
int totalLEDs = 32;
int ledFadeTime = 5;
Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(totalLEDs, Trede1, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(totalLEDs, Trede2, NEO_GRB + NEO_KHZ800);
void setup() {
strip1.begin();
strip1.show(); // Initialize all pixels to 'off'
}
void loop() {
FadeIn(255, 255, 255, ledFadeTime); // Blue
delay (10000);
FadeOut(255, 255, 255, ledFadeTime); // Blue
}
void FadeIn(uint8_t red, uint8_t green, uint8_t blue, uint8_t wait) {
for(uint8_t b = 0; b <255; b++) {
for(uint8_t i=0; i < strip1.numPixels(); i++) {
strip1.setPixelColor(i, red * b/255, green * b/255, blue * b/255);
}
strip1.show();
delay(wait);
};
};
void FadeOut(uint8_t red, uint8_t green, uint8_t blue, uint8_t wait) {
for(uint8_t b=255; b > 0; b--) {
for(uint8_t i = 0; i < strip1.numPixels(); i++) {
strip1.setPixelColor(i, red * b/255, green * b/255, blue * b/255);
}
strip1.show();
delay(wait);
};
};
Alle hulp is welkom, alvast bedankt!