Umstieg von UTFT auf eSPI mit einigen Problemen

Also die Hochkommata sind wieder drin, der zweite Bildschirm ist komplett aus dem Sketch ausgeklammert (bleibt auch weiß), aber die Grafiken funktionieren trotzdem nicht.

Ja das ist ne super Sache. Hab ich bei Kitecraft auf Youtube gesehen. Der benutzt sogar 3 Displays. Der Sketch für 2 Displays ist von hier

Also wenn der Kitecraft meint, dass das mit einer tft-Instanz und zwei gleichzeitig aktivierten Chip-Selects geht - meinetwegen.

Die Anführungszeichen müssen weg!

Ich habe noch keinen Grund gesehen, warum es mit dem Bild nicht gehen sollte.
Die Beispiel-Icons in der Library sehen im Prinzip genauso aus wie das aus dem Konverter:

const unsigned short  alert[1024] PROGMEM={
const unsigned short BMW125[15625] PROGMEM={

Du bist auf einem Mega unterwegs...
Versuch mal bitte

tft.pushImage((int32_t)57, (int32_t)97, (int32_t)125, (int32_t)125, BMW125);

Es erscheint folgende Fehlermeldung vom Compiler:

/Users/gearx/Documents/Arduino/V8_Tacho_eSPI/V8_Tacho_eSPI.ino: In function 'void setup()':
V8_Tacho_eSPI:151:77: error: no matching function for call to 'pushImage(int32_t, int32_t, int32_t, int32_t, const short unsigned int [15625])'
   tft.pushImage((int32_t)57, (int32_t)97, (int32_t)125, (int32_t)125, BMW125);
                                                                             ^
In file included from /Users/gearx/Documents/Arduino/V8_Tacho_eSPI/V8_Tacho_eSPI.ino:15:0:
/Users/gearx/Documents/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:475:12: note: candidate: void TFT_eSPI::pushImage(int32_t, int32_t, int32_t, int32_t, uint16_t*) <near match>
   void     pushImage(int32_t x, int32_t y, int32_t w, int32_t h, uint16_t *data);
            ^~~~~~~~~
/Users/gearx/Documents/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:475:12: note:   conversion of argument 5 would be ill-formed:
/Users/gearx/Documents/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:480:12: note: candidate: void TFT_eSPI::pushImage(int32_t, int32_t, int32_t, int32_t, const uint16_t*) <near match>
   void     pushImage(int32_t x, int32_t y, int32_t w, int32_t h, const uint16_t *data);
            ^~~~~~~~~
/Users/gearx/Documents/Arduino/libraries/TFT_eSPI/TFT_eSPI.h:480:12: note:   conversion of argument 5 would be ill-formed:
exit status 1
no matching function for call to 'pushImage(int32_t, int32_t, int32_t, int32_t, const short unsigned int [15625])'

Na, ist doch prima.
Die ersten vier Parameter haben jetzt die richtige Größe aufgezwungen bekommen.
Dann bitte in BMW125.c das

const unsigned short BMW125[15625] PROGMEM={

ersetzen durch

const uint16_t BMW125[15625] PROGMEM={

EDITIERT

Es funktioniert jetzt super. Vielen Dank für deine wirklich großartige Hilfe!

Yep, die anderen casts waren nur eine Sicherheitsmaßnahme; das komische const short unsigned int aus der ersten Fehlermeldung hat mich gleich gestört.

Na ja, bei 125x125 kann man keine Wunder erwarten.
Was die Farben angeht: Das wird wohl RGB5656 sein. Die Frage ist, ob das Highbyte vorne oder hinten steht.
Statt tft.setSwapBytes(false); ein tft.setSwapBytes(true); könnte Wunder wirken.

Danke für deine Antwort. Das Thema mit der Qualität hat sich ebenfalls erledigt. In einem früheren Stadium des Sketchs hatte ich die Zeile

tft.setSwapBytes(true);

eingefügt, da ich gelesen habe, dass dadurch Probleme mit den Farben gelöst werden könnten. Anfangs war mein blauer Text nämlich rot. Ich hab die Befehlszeile nun einfach komplett gelöscht und die Bitmaps werden wirklich super sauber dargestellt.

Jetzt muss ich nur noch rausfinden, wieso mir keine Werte angezeigt werden. Dann ist der Sketch fertig und ich kann den Tacho wieder ins Fahrzeug bauen.

Danke für die Rückmeldung und viel Erfolg beim "Werte finden" :wink:

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.