Hallo,
ich versuche es auch nochmal im deutschen Teil dieses Forums, da ich mir denke, das einige vielleicht nur hier lesen.
Vor 25 Jahren habe ich eine Menge Basic, Turbo Pascal und Visual Basic programmiert.
Allerdings bisher noch nie etwas mit Arduino.
Deswegen brauche ich ein wenig Eure Unterstützung.
Ich bin auf der Suche nach einer kleinen Funktion, die während der Laufzeit einen HEX Farbcode in einen RGB565 Farbcode umrechnet.
Hier ein paar Beispiele:
#000000 soll 0x0000 (schwarz) zurückgeben
#FF0000 soll 0xF800 (rot) zurückgeben
#00FF00 soll 0x07E0 (grün) zurückgeben
#0000FF soll 0x001F (blau) zurückgeben
#FFFFFF soll 0xFFFF (weiss) zurückgeben
...und so weiter.
Nach einiger Recherche habe ich folgenden codeschnipsel finden können:
uint16_t rgb565( const unsigned long rgb)
{
uint16_t R = (rgb >> 16) & 0xFF;
uint16_t G = (rgb >> 8) & 0xFF;
uint16_t B = (rgb ) & 0xFF;
uint16_t ret = (R & 0xF8) << 8; // 5 bits
ret |= (G & 0xFC) << 3; // 6 bits
ret |= (B & 0xF8) >> 3; // 5 bits
return( ret);
}
Dieser Code ist sehr kompakt und einfach gehalten, was mir schon mal sehr gut gefällt.
Leider macht er noch nicht ganz genau das was ich suche.
Vielleicht kann mir jemand helfen diesen Code so umzuschreiben, dass er "0x07E0" zurückgibt, wenn er "#00FF00" geliefert bekommt?
Vielen Dank und liebe Grüße,
Chris