www.mikrocontroller.net

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


Important announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Erwin Spitaler (Firma: IT-Spitaler) (erwi)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: multiplikator (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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

Autor: Erwin Spitaler (Firma: IT-Spitaler) (erwi)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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?

Autor: hsb (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht 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.

Autor: Erwin (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht 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??

Autor: hsb (Gast)
Datum:
Angehängte Dateien:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Erwin,

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


Gruss

Autor: Erwin (Gast)
Datum:

Diesen Beitrag bewerten:
lesenswert
nicht lesenswert
Danke :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net