Hallo,
ich habe mal ne Frage wie Ihr das macht.
Hintergrund:
Umsetzung einer Aquarienbeleuchtung mit 2 LED Stripes. Davon eine normale RGB-Leiste und eine WS2812. Diese sollen für die Aquarien den Tagesablauf simulieren. Hier ein kleiner Auszug meines aktuellen Sketches zur Verdeutlichung welcher alle paar Sekunden durchlaufen wird/soll:
byte brightnessW2812, brightnessRGB;
CRGB colorW2812 = CRGB::Black;
int colorR = 0;
int colorG = 0;
int colorB = 0;
int brightWS = 0;
brightnessRGB = brightness(now(), SunDown-2800UL, SunDown+800UL)*100/255; //RGB
if (brightnessRGB)
{
// red[3] = { 100, 0, 0 };
colorR = brightnessRGB;
colorG = 0;
colorB = 0;
}
brightnessW2812 = brightnessW2812_T = brightness_T(now(), SunDown, SunDown+4800UL)*100/255;//W2812
if (brightnessW2812)
{
colorW2812 = CRGB::Blue; //W2812
brightWS = brightnessW2812;
}
colorW2812 = CRGB::Blue;
// RGB-LED ist an
analogWrite(_AQUA_RED, colorR); // Write current values to LED pins
analogWrite(_AQUA_GREEN, colorG);
analogWrite(_AQUA_BLUE, colorB);
// W2812-LED ist an
for(int x = 0; x < NUM_STRIPS; x++)
{
for (unsigned int i = 0; i < NUM_LEDS_PER_STRIP; i++)
{
leds[x][i] = colorW2812;
}
}
FastLED.setBrightness( brightWS );
FastLED.show();
Die Umsetzung ist sicherlich nicht perfekt aber für mich vorerst funktional.
Nun meine Frage:
Wie würdet Ihr das langsame Einschalten/Ausschalten der WS2812 umsetzen?
Wie schaffe ich es einzelne Segmente (Aqua1, Aqua2) des WS2812 Stripes in unterschiedlicher Helligkeit darzustellen? setBrightness macht diese ja nur komplett! Geht das nur über Farbpaletten und den Befehl ColorFromPalette?
Wie würdet Ihr am besten die einzelnen Segmente aufteilen in Variablen? So als Beispiel?
int WSSegment[][3] = {
{ 1,15,35 }, // Aqua1 auf Stripe 1 ab LED 15 bis 35
{ 3,45,75 }, // Aqua2 auf Stripe 3 ab LED 45 bis 75
.....
};
Für Ideen und hilfreiche Tipps wäre ich sehr dankbar.
vg
Falk