Forum: Mikrocontroller und Digitale Elektronik HSB LED Steuerung mit Atmega 8 in ASM suche Hilfe


von Erwin S. (Firma: IT-Spitaler) (erwi)


Angehängte Dateien:

Lesenswert?

Hallo,

kurz  Text:

Wie Programmiert man eine Umrechnung (Atmeg8) von HSB zu RGB  in 
Assembler.



Langer Text:

Hab mir vor kurzen eine 5m RGB-LED_Strip  gekauft, bin aber mit dem 
dazugehörigen Controller unzufrieden deswegen möchte ich mir selbst 
einen bauen.
(mit einem Atmega8; 3potis für die H-Farbton, S-Sättigung und 
B-Helligkeit also HSB Eingabe und die LED sollen dann über die drei PWM 
Ausgänge [PB1-3]angesteuert werden;)

Verwende einen ATMEGA8
PS ist Assembler
Die 3 ADCwerte 10bit  werden auf 8bit reduziert
H [0-255],   0=0°, 255=360°
S [0-255], B [0-255];     0=0%, 255=100%
3  8bit PWM´s für RGB Ausgabe
R [0-255], G [0-255], B [0-255];

Hab natürlich zuerst die SUFU genützt, bin dann gleich auf den Wikipedia 
Beitrag gestoßen
http://de.wikipedia.org/wiki/HSV-Farbraum
verstehe aber nicht wie man das f (in Assembler) aus rechnet
f  = (H/60°)-hi    ; wenn ich hi abziehe kommt dann null raus??
hi =(H/60°)    ; oder ist das hi so zu verstehen 360°/60° dann kommt bei 
f aber ein minus wert raus??


Im Forum hab ich auch einen Beitrag gefunden war sehr hilfreich leider 
werden hier nicht die vollen 255 umgerechnet sondern nur ein Bereich bis 
100.
Beitrag "Fertig: HSB->RGB Umrechnung rein in Assembler, auch für ATiny"


Hab nun schon ein kleines Programm geschrieben funktioniert auch so halb 
aber nicht ganz :-)

So nun zu meiner Frage bzw bitte:

Kein mir jemand zeigen, helfen wie man  die Umrechnung von HSB in RGB 
in asm (richtig) Programmiert.



MFG erwin

von multiplikator (Gast)


Lesenswert?

Erwin Spitaler schrieb:
> Im Forum hab ich auch einen Beitrag gefunden war sehr hilfreich leider
> werden hier nicht die vollen 255 umgerechnet sondern nur ein Bereich bis
> 100.

*2,55

von Erwin S. (Firma: IT-Spitaler) (erwi)


Lesenswert?

Ja
 jetzt könnte man die eingangs werte mit 2,55 dividieren
Und dann die Ausgangswerte  wieder mit 2,55 multiplizieren
Warum so, kann man nicht gleich mit den vollen 8 Bit rechnen?

von hsb (Gast)


Lesenswert?

Erwin,

Das ASM-Prog aus dem gefundenen Beitrag ist schon richtig,
denn die S(aturation) und B(rightness) Werte werden nunmal eben 
sinnvollerweise in Prozent angegeben (0..100).

Genau SO ist HSB übrigens definiert!

Der H(ue)-Winkel zwar von 0..359Grad, aber es ist ausreichend erklärt im 
Beitrag warum aus Performancegründen auf 0..191 reduziert wurde.

Natürlich ist es aus binärer-Programmierer-Sicht verständlich,
im Bereich 0..255 operieren zu wollen, aber das "menschliche" 
Farbempfinden lässt sich eben besser in 0..100% ausdrücken.

Abgesehen davon ließe sich das ASM-Programm recht einfach umbauen,
wenn man unbedingt im 0..255 Bereich arbeiten will.

von Erwin (Gast)



Lesenswert?

Danke erst mal für eure antworten


hsb schrieb:
> Abgesehen davon ließe sich das ASM-Programm recht einfach umbauen,
> wenn man unbedingt im 0..255 Bereich arbeiten will.

Und genau das möchte ich ja
nur hab ich ein Problem wie rechnet man den f wert aus?
Die wikipedia Erklärung verwirrt mich total


f  = (H/60°)-hi    ; wenn ich hi abziehe kommt dann null raus??
hi =(H/60°)    ; oder ist das hi so zu verstehen 360°/60° dann kommt bei
f aber ein minus wert raus??

von hsb (Gast)


Angehängte Dateien:

Lesenswert?

Erwin,

hier ist das ganze für den Wertebereich 0..255


Gruss

von Erwin (Gast)


Lesenswert?

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.