Forum: Mikrocontroller und Digitale Elektronik WS2812B LEDs, Farben gleichmäßig dimmen


von Matthias (matthiasm)


Lesenswert?

Hi zusammen,

ich möchte WS2812B LEDs sauber dimmen. Also einen eingestellten Farbwert 
z.B. in 10% Schritten dimmen.

Wie geht man dabei am besten in C vor? Mein Attiny2313 hat leider nicht 
sonderlich viel Speicher um große Prozentrechnungen durchzuführen...

Generell würde ich es so machen:

red = red * 0.9;
green = green * 0.9;
blue = blue * 0.9;

Dadurch entstehen aber zwei Probleme:

1. die Farbe wird verfälscht weil Kommastellen in den 8Bit nicht möglich 
sind.
2. die Berechnung ist für den kleinen Attiny zu aufwendig.

Wie dimmt man diese LEDs daher am besten und effizientesten ohne die 
Farbe zu verändern?

Danke, Gruß
Matthias

von Chris K. (Gast)


Lesenswert?


von 50c (Gast)


Lesenswert?

...beschäftige dich mal ein wenig mit Farbräumen (es gibt nicht nur 
RGB). HSV (https://de.wikipedia.org/wiki/HSV-Farbraum) z.B. 
berücksichtigt die Helligkeit.

Umrechnungen RGB <-> HSV sind zu genüge im Netz zu finden.

von Axel R. (Gast)


Lesenswert?

Du kannst 16bit multiplizieren (rot mal 255 macht 100%, rot mal 128 sind 
dann 50% usw.) und nur das High-Byte verwenden.
hatte ich mir bei Elm Chan seiner Spieldose angesehen. Da lässt er die 
Töne am Ende genau so abklingen: Multiplizieren und das High-Byte als 
Ergebnis.
(ok - dort als PWM-Wert fürs OCR-Register, anwendungsbezogen halt).

RGB->HSV wurde ja schon genannt, erleichert die Herangehensweise ernorm.

StromTuner

von Matthias (matthiasm)


Lesenswert?

Hi zusammen,

vielen Dank für eure Hinweise.
HSV ist geil, gestern gleich mal ein bisschen rumgespielt. Genau das was 
ich gesucht habe!!

Danke!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.