Adafruit_GFX -> Farbcode in eine Variable

Irgendwas habe ich nicht begriffen :o

Mit dem Befehl " tft.setTextColor(ST7735_RED)" ändere ich die Textfarbe auf dem Display. Da ich zwei Farben an mehrenen Stellen im Code benutze, schalte ich zwischen diesen Farben um.
Da ich aber noch am “Design” arbeite, ist es sehr mühsam jede Stelle im Code anzusteuern und dort wieder die neue Farbe einzutragen.

Jetzt versuche ich mit “tft.setTextColor(color1)” bzw. “tft.setTextColor(color2)” dies einfacher zumachen.

Wie muss ich denn die Varibale “color1” bzw. “color2” definieren?

Dies funktioniert nicht:

byte color1 = 0x8410; // grau
byte color2 = 0x001F; // blau

Lerne das Hexadezimal-System. Das brauchst du im µC-Bereich generell

Jede Hex-Ziffer (von 0-16) sind 4 Bit. Damit ist 0x10 ein Byte. 0x8410 sind 16 Bit und damit ein unsigned int

Und schalte ein den Einstellungen die Warnungen an! Dann bekommst du sowas gleich mit:

warning: large integer implicitly truncated to unsigned type [-Woverflow]

Das mit “unsigned type” ist etwas verwirrend, aber “truncated” und “overflow” sagen klar was falsch ist

Danke, jetzt funzt es.

Mit den Bytes hatte ich letzte Woche meine erste Berührung (-> serielle Daten lesen) .... das sitzt wohl noch nicht richtig :confused:

Wenn die Farben konstant sind, kannst Du sie auch als Konstanten oder gleich als Textersetzung definieren:

#define COLOR1 0x8410     // grau
#define COLOR2 0x001F     // blau

Dann kann Dir der Typ egal sein.

Und was machst du wenn du eine Farbe als Parameter an eine Funktion übergeben willst?

Serenifly: Und was machst du wenn du eine Farbe als Parameter an eine Funktion übergeben willst?

Eine Variable benutzen!

gj99: Jetzt versuche ich mit "tft.setTextColor(color1)" bzw. "tft.setTextColor(color2)" dies einfacher zumachen.

Die Fragestellung suggeriert bei mir aber eine andere Notwendigkeit, weshalb dies meine Antwort ist:

#define COLOR1 0x8410     // grau
#define COLOR2 0x001F     // blau
...
tft.setTextColor(COLOR1);
...
tft.setTextColor(COLOR2);
...

Wenn im Kontext eine Variable notwendig ist, dann muß man halt eine Variable nutzen :)

Oder man nimmt eine Konstante

const unsigned int color1 = 0x8410;                     
const unsigned int color2 = 0x001F;

:)

Bzw. Großbuchstaben, wie bei Konstanten eigentlich üblich...