FastLED Library- Gamma-/ Helligkeitsverteilungstabelle

Hallo,

wie gehe ich am Besten vor, wenn ich LEDs anhand einer Tabelle definierte Helligkeitswerte zuweisen möchte, ich aber ausschließlich mit CRGB-Arrays arbeite?

Wenn ich per for-Schleife und..

luma[i] = leds[i].getLuma();

..die Helligkeitswerte der einzelnen LEDs ausgelesen habe weiss ich nicht, wie ich diese Werte durch die in der o.a. Helligkeitstabelle hinterlegten Werte ersetzen kann, um den einzelnen LEDs einen angepassten Helligkeitsverlauf zu geben. Das arbeiten in RBG scheint hierbei nicht zweckmäßig zu sein.

Die Helligkeitstabelle soll aus einem Byte-Array bestehen und den Helligkeitsverlauf der LEDs anpassen, da mir die Helligkeitsverteilung momentan noch nicht homogen genug ist.

Mit napplyGamma_video aus der FastLED-Library bin ich zu keinen brauchbaren Ergebnissen gekommen, wobei ich hierbei nicht ausschließen möchte, dass ich hierbei das Problem war.

Gruß Chris

Wenn Du FastLED Funktionen nutzen möchtest, dann diese:

CRGB 	applyGamma_video (const CRGB &orig, float gamma)

oder diese:

CRGB 	applyGamma_video (const CRGB &orig, float gammaR, float gammaG, float gammaB)

Oder so für alle LEDs (ohne Schleife, count = NUM_LEDS):

void 	napplyGamma_video (CRGB *rgbarray, uint16_t count, float gamma)
 
void 	napplyGamma_video (CRGB *rgbarray, uint16_t count, float gammaR, float gammaG, float gammaB)

Wenn Du eine eigene Tabelle nutzen möchtest, dann schau Dir nochmal das Beispiel an, welches ich Dir im FastLED Forum geschickt habe. Tabelle gamma_curve definieren und dann

for (int i = 0; i < NUM_LEDS; i++) {
  leds[i].r = gamma_curve[leds[i].r]; 
  leds[i].g = gamma_curve[leds[i].g]; 
  leds[i].b = gamma_curve[leds[i].b]; 
}

Bei Bedarf 3 Tabellen verwenden, um R, G und B einzeln einzustellen.

Gruß, Helmuth

1000 Dank! Werds ausprobieren. :slight_smile:

Gruß Chris

Gamma 2.2 funktioniert meist ganz gut...

Danke für den Tipp!

Gruß Chris