RGB-LEDs steuern

Gast #2207727
Lesenswert?

Hallo,
ich möchte folgendes realisieren.
Ich habe mehrere Streifen mit RGB-LEDs. Diese möchte ich mit einem 
Mikrocontroller sowohl in der Helligkeit als auch in der Farbtemperatur 
automatisch steuern. Die LEDs sollen immer weiss leucteh, allerdings 
soll die Halligkeit und Farbtemperatur wie folgt verändert werden:

Zu beginn leuchten die LEDs nur sehr schwacj und die Farbtemperatur ist 
ein warmes Weiss.
Anschliessend soll die Helligkeit sehr langsam gleichmässig immer 
grösser werden, und auch die Farbtemperatur möchte ich stetig verändern, 
das Licht soll immer "kälter" werden.

Habt ihr mir einen klugen Ansatz, wie ich das bewerkstelligen kann? 
Gerade bezüglich der Farbtemperatur finde ich wenig hilfreiches im Netz.
Gast #2207892
Lesenswert?

>Zu beginn leuchten die LEDs nur sehr schwacj und die Farbtemperatur ist
>ein warmes Weiss.
>Anschliessend soll die Helligkeit sehr langsam gleichmässig immer
>grösser werden, und auch die Farbtemperatur möchte ich stetig verändern,
>das Licht soll immer "kälter" werden.
>
>Habt ihr mir einen klugen Ansatz, wie ich das bewerkstelligen kann?

Warmweiss hat einen höheren Gelbanteil. Den mischt man aus
Rot und Grün, Blau eher wenig dazugeben. Bei Kaltweiss kommt
dann ein höherer Blauanteil dazu.
#2207894
Lesenswert?

Albert G. schrieb:
> Danke.
> Leider brauche ich das Ding bis Montag :-(

Dann definiere, dass dein 'warmes' Weiß ein Weiß mit einem ganz leichten 
Stich ins Rote ist, dein 'kaltes' Weiß ein Weiß mit einem leichten Stich 
ins Blaue.
Such dir eine HLS nach RGB Umrechnung und mach die Farbrampe im HLS 
Raum.

  Hue     Farbton
  L       Lightness    (Helligkeit der 'Farbe')
  S       Saturation   (Farbsättigung: 1 .. reine Farbe, 0 .. Grauwerte)


Hue ist bei dir eine Rampe von Rot nach Blau
Lightness, bei dir von 0 bis 1 durchvariieren, während die Hue 
durchläuft
Saturation,  nur ganz schwach aufgedreht.

Du lässt die Hue von Rot nach Blau verändern, lässt dir mit der 
Umrechnung aus den HLS Werten die RGB Werte bestimmen und gibst die auf 
die LED

Du kannst natürlich auch ganz einfach sagen:

Weiß ist, wenn alle Kanäle auf 1 sein. R = G = B = 1

für ein etwas rötlicheres Weiß nimmst du G und B etwas zurück. Einfach 
mal ausprobieren. R = 1, G = 0.9, B = 0.9   wird ein leichtes Rosa sein
für ein etwas bläulicheres Weiß nimmst du R und G etwas zurück. Wieder 
ausprobieren. R = 0.9, G = 0.9, B = 1   wird ein leichtes Hellblau sein

Mit den Werten kannst du spielen, bis du Farben hast, die deiner 
Vorstellung der gewünschten 'Farbtemperatur' nahe kommen.

Und der Übergang von dem einen zum anderen ist einfach eine 
Interpolation, zwischen den soweit definierten RGB-Endpunkten.

Für alle Zwischenwerte t von 0 bis 1

    R_zu_setzen = t * R_rosa + ( 1 - t ) * R_hellblau
    G_zu_setzen = t * G_rosa + ( 1 - t ) * G_hellblau
    B_zu_setzen = t * B_rosa + ( 1 - t ) * B_hellblau

Die Helligkeitsvariation ist dann einfach nur ein zusätzlicher Faktor 
der noch mit aufmultipliziert wird.

Einfach mal ein wenig kreativ sein. Kaputt gehen kann ja nichts. Wo 
bleibt denn da der Spass beim Basteln, wenn man sich immer alles 
vorkauen lässt und nix selber ausprobiert und 'erfindet'.
Gast #2216677
Lesenswert?

Hallo Karl Heinz,
vielen Dank für deinen Tipp. Ich habe mein Problem nun lösen können, 
indem ich gemäss Wikipedia eine HLS-nach-RGB Konvertierung durchgeführt 
habe und so die Duty Cycles meiner PWM berechnet habe.
Das einzige unschöne war folgendes:
Macht man eine Rampe von Rot nach Blau in HLS, dann kommt dazwischen 
leider noch Violett. Das passte nicht wirklich ins Konzept, dieses Dumme 
Violett, deshalb musste ich die Sättigung schon sehr weit nach unten 
setzen, damit man es nicht sieht - leider erkennt man dann auch kaum 
mehr einen Unterschied zwischen wärmerem und kälterem Licht.
Wie könnte ich das noch beheben?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren