RGB Steuerung Lösungsansatz gesucht

OP #3168760
Bräuchte Tipps für folgendes vorhaben :

Ich möchte eine 50W RGB LED folgendermaßen ansteuern.
( Hardware und die Erzeugung der 3 PWM Kanäle mit AVR ist kein Problem )

An einem Atmega sollte per Poti (ADC )sowiel möglichkeiten wie möglich 
RGB Misschung erzeugt werden.

Mein erster Ansatz wäre evtl. mit Select Case Anweisungen die PWM Werte 
zuzuordnen. ( Bascom )

Etwa so :

Select Case Potiwert

Case 10
PWM1 =0
PWM2 =10
PWM3 =0

Case 20
PWM1 =50
PWM2 =0
PWM3 =255

usw..

gibt es eine elegantere/feinere  Methode ?
Thomas der Bastler schrieb:

> gibt es eine elegantere/feinere  Methode ?


HLS Farbsystem

Wenn du nur 1 Poti hast, läuft es darauf hinaus, dass du das Poti an H 
hängst und so den Farbkreis rundum gehst. Mit dem Poti stellst du dann 
den Farbton von rot über grün über blau und wieder zurück nach rot ein.

HLS kann man entweder über die korrekten Formeln zurückrechnen, oder 
aber wenn du nur H variabel hast, kann man da auch eine Vereinfachung 
machen.

> gibt es eine elegantere/feinere  Methode ?

Man möchte es kaum glauben, aber ein Computer kann auch aus einem Wert 
ein paar andere errechnen.
Karl Heinz Buchegger schrieb:

> HLS kann man entweder über die korrekten Formeln zurückrechnen, oder
> aber wenn du nur H variabel hast, kann man da auch eine Vereinfachung
> machen.

Das sieht dann in den Einzel-Helligkeiten so aus.
Die x-Achse des Diagramms ist dein Wert vom Poti. Die einzelnen Kurven 
zeigen, welcher RGB Wert für jede dieser Stellungen jeweils zu 
realisieren ist.

Dann kannst du mit deinem Poti die Farbe mehr oder weniger stufenlos 
durchdrehen. Wie gut die dann von der RGB Led realisiert wird, ist 
allerdings eine andere Frage.
Angehängte Dateien:
Karl Heinz Buchegger schrieb:
> Thomas der Bastler schrieb:
>> Danke Karl-Heinz für die Zeichnung hilft schon weiter.
>
> Teil dir den Potiweg in 6 Abschnitte ein.
> In jedem Abschnitt sind jeweils 2 Farben konstant während 1 durchgedimmt
> wird (entweder auf oder ab).

So habe ich das mal gelöst...
Ist aber schon länger her, aber müsste eigentlich so funktionieren.
1
void Berechnung_Auto (uint16_t Wert)
2
{            
3
  if (Wert <= 51)     // Rot 255 grün ansteigend
4
    {
5
    PWM_R = 255;
6
    PWM_G = Wert * 5;
7
    PWM_B = 0;
8
    }
9
  if (Wert > 51 && Wert <= 102)   // Rot fallend Grün 255
10
    {
11
    PWM_R = 255 - ((Wert - 51) * 5);
12
    PWM_G = 255;
13
    PWM_B = 0;
14
    }
15
  if (Wert > 102 && Wert <= 153)   // Grün 255 Blau steigend
16
    {
17
    PWM_R = 0;
18
    PWM_G = 255;
19
    PWM_B = (Wert - 102) * 5;
20
    }
21
  if (Wert > 153 && Wert <= 204) // Blau 255 Grün fallend
22
    {
23
    PWM_R = 0;
24
    PWM_G = 255 - ((Wert - 153) * 5);
25
    PWM_B = 255;
26
    }
27
  if (Wert > 204 && Wert <= 255) // Blau 255 Rot steigend
28
    {
29
    PWM_R = (Wert - 204) * 5;
30
    PWM_G = 0;
31
    PWM_B = 255;
32
    }
33
  if (Wert > 255 && Wert <= 306) // Rot 255 Blau fallend
34
    {
35
    PWM_R = 255;
36
    PWM_G = 0;
37
    PWM_B = 255 - ((Wert - 255) * 5);
38
    }
39
}

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.