ich habe den Titel hoffentlich zu meinen Problem passend formuliert...
Ich tue mir etwas schwer mit Sprachen- ich hab das logische Denken, um ewig lange Programmierungen zu schreiben, aber wie ich alles richtig "formuliere" ist was anderes...
Aktuell habe ich ein Problem mit einem TFT- das Programm läuft gut- so gut, dass ich mir über verschiedene Designs Gedanken machen kann.
Nun habe ich Zeilen, die z.b. einer Schrift eine bestimmte Farbe geben- z.b. so eine hier:
tft.setTextColor(RA8875_YELLOW);
Nun möchte ich aber gern "RA8875_YELLOW" mit einer Variablen ersetzen, die ich in meinem Programm ändern kann. Wie ich eine Variable als "Platzhalter" nehme, um dann via #define Variable RA8875_YELLOW die Farbe zu setzen weiß ich... aber wie änder ich es im Programm?
Datentype farbe = RA8875_YELLOW;
tft.setTextColor(farbe);
// tuwas mit gelb
farbe = RA8875_green;
tft.setTextColor(farbe);
// tuwas mit grün
Ich habe KA, was die Farbe für ein Datentype ist...(kenne die Lib nicht)
Also bitte das richtige einsetzen.
Ebenso habe ich KA, ob es RA8875_green gibt...
Also bitte das richtige einsetzen.
ich würde das Programm erstmal mit "suchen" nach RA8875_YELLOW abgrasen. Um zu schauen ob es schon eine Variable ist oder doch ein Wert. Wenn es eine Variable ist, würde ich weiter suchen wo diese initialisiert und/oder geändert wird. Wenn es ein Wert ist, würde ich suchen wo der herkommt und wie der erzeugt wird.
Wieso "ja"? Eine #define Makro ist keine Variable. Sondern eine Konstante. Und zwar eine ganz primitive, die nur eine Text-Ersetzung ist.
Wenn du eine Variable willst, nehme eine Variable. Wo ist da das Problem? Der Datentyp muss halt passen. Eine RGB Farbe ist manchmal ein struct mit den einzelnen Werten (wie in FastLED). Im Display Bereich ist es oft ein unsigned int, in dem die Farbe als RGB565 kodiert ist (5 Bit Rot, 6 Bit Grün, 5 Bit Blau).
Du musst dir nur den Parameter von setTextColor() ansehen (im Header der Library). Damit siehst du sofort was die Funktion möchte
Vielen Dank für Eure Antworten- ich weiß schon was ihr meint... ich bekomm es aber nicht so ganz zu greifen- wie im Urlaub, wenn man auf dem Weg zum Urlaubsort noch eben ne Sprachkassette einlegt und dann beim Bäcker steht und einfach nicht den Satz zusammen bekommt, dass man 10 Brötchen will
Ich hoff ihr nehmts mir nicht übel, dass ich mich etwas langsam-denkend anstelle
Den Gegenspieler kenne ich zumindest so weit, dass ich da schon eigene Farben rein setzen konnte- war aber einfach nur das nachahmen von erkennbaren Mustern, also kein wissentliches Tun.
Kann mir das mit dem "unit16_t" noch jemand etwas erklären?
Was ist deine konkrete Frage dazu?
Ein Versuch der Antwort:
unit16_t heißt: 16 Bit vorzeichenloses Integer
Dazu muss man wissen, dass nicht alle "unsigned int" (vorzeichenlose Integer) 16 Bit breit sind.
In der c/C++ Welt sind sie das mindestens.
Aber auch nur "mindestens".
Je nach System, sind sie auch mal 32, oder 64 Bit breit.
Selbst Exoten mit 18 Bit gibt es.
Aber:
Ein "unit16_t" ist IMMER 16 Bit breit.
(wird zumindest so behandelt)
Das ist im ganzen bekannten Universum so.
Darum wird "unit16_t" recht gerne verwendet.
Da weiß man, was man hat.
OK.... danke für eure Antworten. Da die meisten Anleitungen und Beschreibungen zu Arduino in englisch sind und ich Programmieren/Programmiersprachen nie wirklich gelernt habe, kenne ich wahrscheinlich nur einen Bruchteil der Möglichkeiten. Bei meinem aktuellen Projekt kommen beim kompilieren auch viel Hinweise/Warnungen, die sich auch auf Variablen beziehen- laufen tut alles wie gewünscht... aber ich möchte das ganze auch sauber hinbekommen, da es doch ein relativ großes Projekt ist...
Mein Halbwissen ist so groß, dass ich in dem Fall noch nicht mal die Fragen richtig formulieren könnte...
Ich bin schon oft über Dinge gestolpert, wie z.b. das beim Aufrufen einer Funktion, z.b. "void tuetwas()" in den Klammern etwas steht... wo ich nicht weiß was es für einen Einfluß/Zweck hat...
Dann kann ich dir eigentlich nur raten, eins der dicken C++ Bücher zu kaufen, und konsequent durch zu arbeiten. Wenn da Arduino drauf oder drin steht, ist das eher schädlich für die Grundlagen.
Erst die Grundlagen lernen, dann die Arduino Besonderheiten.
Ob das für dich der optimale Weg ist, kann ich nicht sagen.
Mir hat es geholfen.
Ich habe in Schule und Ausbildung nie eine Programmiersprache lernen dürfen.
Und doch hat es mich viele Jahre ernährt und ein 1/2 Dutzend Fahrten nach Korea eingebrockt.
Ich frag mal ganz naiv, ob es da auch ne Zusammenfassung gibt?
Ich lerne schnell- hab aber definitiv zu viele Hobbies- derzeit steht schreinern im Vordergrund- brauchen noch einiges an Möbeln .
Arduino läuft so nebenbei- aber relativ ambitioniert- da hab ich seit kurzen meine ersten professionell gefertigten Platinen die ich nun von Hand bestücke- da es echt schön geworden ist, muss ich mich nun noch in eagle einarbeiten, um auch mal "Kleinkram" ohne Hilfe machen zu können.
Ein C/C++- Buch kann ich mal abends im Bett 20min lesen- da sollte es keine 5 Jahre dauern bis ich durch bin
Und mit jeder Kleinigkeit will ich hier im Forum auch nicht nerven