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 ?
Ja Farbtabelle in Flash und Adc werte auf Farbtabelle abbilden.
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.
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).
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 | }
|
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.