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
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
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?
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.
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??
Erwin, hier ist das ganze für den Wertebereich 0..255 Gruss
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.