www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik 16 Bit Farbwerte Tabelle


Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

mal eine ganz dumme Frage.

Ich programmiere ein S65 Display und habe eine Library an meine Hardware 
angepasst. Darin sind ca. 6 Farben (16Bit) definiert.

z.B. schwarz: 0x0000
     weiß:    0xFFFF
     rot:     0xF800



Wie kann ich mir zum Beispiel die Farbe orange erzeugen ?

Ich will nicht jede Kombination ausprobieren und schauen, was das 
Display zeigt.

Kennt jemand eine Tabelle, wo die einzelnen Farben zu den jeweiligen 
16Bit zugeordnet sind ?

Danke für die Hilfe !

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm eine der zahlreich verfügbaren 24-Bit-Farbtabellen* fürs Webdesign, 
suche Dir den passenden Farbwert aus, streiche die entsprechenden LSBs 
und kombiniere die resultierenden Werte zu Deinem 16-Bit-Wert.

Beispiel:



0xFF6633
             76543210    -> 76543210
R = 0xFF = 0b11111111     0b11111---
G = 0x66 = 0b01100110     0b01100---
B = 0x33 = 0b00110011     0b00110---


R  11111
G       01100
B            00110

  -111 1101 1000 0110
     7    D    8    6

0x7D86

Dies Beispiel ist für 15-Bit-Farben (5 Bit je Grundfarbe), bei einer 
ungleichmäßigen Verteilung musst Du das Schema entsprechend anpassen. 
Meistens hat G dann sechs statt fünf Bits.


*) http://www.colorschemer.com/online.html

Autor: Hagen Re (hagen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aus meine S65 Lib
#define     RGB(r, g, b)                (((r & 0xF8) << 8) | ((g & 0xFC) << 3) | ((b & 0xF8) >> 3))
#define     NONE                        RGB(0x00, 0x04, 0x00)
#define     BLACK                       RGB(0x00, 0x00, 0x00)
#define     DKGRAY                      RGB(0x40, 0x40, 0x40)
#define     GRAY                        RGB(0x80, 0x80, 0x80)
#define     LTGRAY                      RGB(0xA0, 0xA0, 0xA0)
#define     WHITE                       RGB(0xFF, 0xFF, 0xFF)
#define     DKRED                       RGB(0x60, 0x00, 0x00)
#define     RED                         RGB(0xFF, 0x00, 0x00)
#define     LTRED                       RGB(0xFF, 0x40, 0x40)
#define     DKGREEN                     RGB(0x00, 0x70, 0x00)
#define     GREEN                       RGB(0x00, 0x8F, 0x00)
#define     LTGREEN                     RGB(0x50, 0xFF, 0x50)
#define     DKBLUE                      RGB(0x00, 0x00, 0x60)
#define     BLUE                        RGB(0x10, 0x10, 0xFF)
#define     LTBLUE                      RGB(0x60, 0x60, 0xFF)
#define     DKYELLOW                    RGB(0x80, 0x80, 0x00)
#define     YELLOW                      RGB(0xFF, 0xFF, 0x00)
#define     LTYELLOW                    RGB(0xFF, 0xFF, 0x80)
#define     DKMAGENTA                   RGB(0x60, 0x00, 0x60)
#define     MAGENTA                     RGB(0xFF, 0x00, 0xFF)
#define     LTMAGENTA                   RGB(0xFF, 0x60, 0xFF)
#define     DKCYAN                      RGB(0x00, 0x60, 0x60)
#define     CYAN                        RGB(0x00, 0xB0, 0xB0)
#define     LTCYAN                      RGB(0x60, 0xFF, 0xFF)
#define     GOLD                        RGB(0x90, 0x90, 0x30)


Für den Anfang gehst du so vor wie Rufus es sagte, dann musst du aber 
dein Orange fintetunen auf das Display da dieses farbverfälschend ist.

Das Makro RGB(r,g,b) wandelt einen 24 Bit Farbwert als 3 Bytes für 
Rot,Grün,Blau in den für das S65 gültigen 16 Bit Farbwert um. Dabei 
entfernt es die LSBs.

Gruß Hagen

Autor: Klaus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Display hat 5 Bit für R, 5 Bit für B und 6 Bits für G.

Ich werde das mal ausprobieren.

Danke für eure Beiträge.

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
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
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 bestätigst du, die Nutzungsbedingungen anzuerkennen.