Probleme mit 3.5" Display von Waveshare

Moin, da habe ich wohl wieder zu schnell ein Display gekauft und jetzt merke ich das es keine funktionierende Bibliothek dafür zu geben scheint.

Es handelt sich um ein 3.5inch TFT Touch Shield mit ILI9486 und XPT2046 von Waveshare. Ich möchte es auf einem UNO nutzen .

Hat schon jemand dieses Display von Waveshare auf einem UNO zum laufen gekriegt?

Mir geht es nur darum zusehen ob und wie das Display mit dem UNO funktioniert.

Ein schönen Sonntag wünsche ich Euch.

Jan

Jan74: .... Mir geht es nur darum zusehen ob und wie das Display mit dem UNO funktioniert.

Und warum postest du uns nicht gleich einen Hyperlink deines Displays. Das macht uns die Hilfe leichter und du hast evtl. schneller ein Ergebnis.

Sorry, ich wusste nicht ob es erwünscht ist hier etwas zu verlinken.
Es handelt sich um dieses Display 3.5inch Display

Bist du mal dem Link auf der Produktseite, unter Dokumente gefolgt? :wink: In der Wiki von Waveshare findest du Datenblätter, Libs und Beispielanwendungen.

Das mit der Dokumentation wollte ich dir auch ans Herz legen. Wenn es dennoch nicht funktioniert, solltest du dich an den Händler wenden.

Zudem ist da reichlich über Google zu finden.

Ja, hatte ich gleich gemacht.
Wenn ich den Mustersketch " LCD_Touch" ausführen möchte , erhalte ich folgende Fehlermeldung.

Arduino: 1.8.5 (Windows 10), Board: “Arduino/Genuino Uno”

In file included from sketch\LCD_GUI.cpp:16:0:

LCD_GUI.h:127: error: ‘sFont’ has not been declared

void GUI_DisChar(POINT Xstart, POINT Ystart, const char Acsii_Char, sFont* Font, COLOR Color_Background, COLOR Color_Foreground);

^

LCD_GUI.h:128: error: ‘sFont’ has not been declared

void GUI_DisString_EN(POINT Xstart, POINT Ystart, const char * pString, sFont* Font, COLOR Color_Background, COLOR Color_Foreground );

^

LCD_GUI.h:129: error: ‘sFont’ has not been declared

void GUI_DisNum(POINT Xpoint, POINT Ypoint, int32_t Nummber, sFont* Font, COLOR Color_Background, COLOR Color_Foreground );

^

LCD_GUI.cpp:251: error: ‘sFont’ has not been declared

sFont* Font, COLOR Color_Background, COLOR Color_Foreground)

^

sketch\LCD_GUI.cpp: In function ‘void GUI_DisChar(uint16_t, uint16_t, char, int*, uint16_t, uint16_t)’:

LCD_GUI.cpp:260: error: request for member ‘Height’ in ‘* Font’, which is of non-class type ‘int’

uint32_t Char_Offset = (Acsii_Char - ’ ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));

^

LCD_GUI.cpp:260: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

uint32_t Char_Offset = (Acsii_Char - ’ ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));

^

LCD_GUI.cpp:260: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

uint32_t Char_Offset = (Acsii_Char - ’ ') * Font->Height * (Font->Width / 8 + (Font->Width % 8 ? 1 : 0));

^

LCD_GUI.cpp:261: error: request for member ‘table’ in ‘* Font’, which is of non-class type ‘int’

const unsigned char *ptr = &Font->table[Char_Offset];

^

LCD_GUI.cpp:263: error: request for member ‘Height’ in ‘* Font’, which is of non-class type ‘int’

for (Page = 0; Page < Font->Height; Page ++ ) {

^

LCD_GUI.cpp:264: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

for (Column = 0; Column < Font->Width; Column ++ ) {

^

LCD_GUI.cpp:281: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

if (Font->Width % 8 != 0)

^

sketch\LCD_GUI.cpp: At global scope:

LCD_GUI.cpp:297: error: ‘sFont’ has not been declared

sFont* Font, COLOR Color_Background, COLOR Color_Foreground )

^

sketch\LCD_GUI.cpp: In function ‘void GUI_DisString_EN(uint16_t, uint16_t, const char*, int*, uint16_t, uint16_t)’:

LCD_GUI.cpp:309: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

if ((Xpoint + Font->Width ) > sLCD_DIS.LCD_Dis_Column ) {

^

LCD_GUI.cpp:311: error: request for member ‘Height’ in ‘* Font’, which is of non-class type ‘int’

Ypoint += Font->Height;

^

LCD_GUI.cpp:315: error: request for member ‘Height’ in ‘* Font’, which is of non-class type ‘int’

if ((Ypoint + Font->Height ) > sLCD_DIS.LCD_Dis_Page ) {

^

LCD_GUI.cpp:325: error: request for member ‘Width’ in ‘* Font’, which is of non-class type ‘int’

Xpoint += Font->Width;

^

sketch\LCD_GUI.cpp: At global scope:

LCD_GUI.cpp:341: error: ‘sFont’ has not been declared

sFont* Font, COLOR Color_Background, COLOR Color_Foreground )

^

sketch\LCD_GUI.cpp: In function ‘void GUI_Showtime(uint16_t, uint16_t, uint16_t, uint16_t, DEV_TIME*, uint16_t)’:

LCD_GUI.cpp:471: error: ‘sFont’ was not declared in this scope

sFont *Font = NULL;

^

LCD_GUI.cpp:471: error: ‘Font’ was not declared in this scope

sFont *Font = NULL;

^

sketch\LCD_GUI.cpp: In function ‘void GUI_Show()’:

LCD_GUI.cpp:562: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisString_EN(uint16_t, uint16_t, const char*, int*, uint16_t, uint16_t)’

GUI_DisString_EN(80, 80, “WaveShare Electronic”, &Font24, LCD_BACKGROUND, BLUE);

^

LCD_GUI.cpp:563: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisString_EN(uint16_t, uint16_t, const char*, int*, uint16_t, uint16_t)’

GUI_DisString_EN(80, 120, “3.5inch TFTLCD”, &Font20, RED, BLUE);

^

LCD_GUI.cpp:566: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisNum(uint16_t, uint16_t, int32_t, int*, uint16_t, uint16_t)’

GUI_DisNum(80, 150, 1234567890, &Font16, LCD_BACKGROUND, BLUE);

^

LCD_GUI.cpp:598: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisString_EN(uint16_t, uint16_t, const char*, int*, uint16_t, uint16_t)’

GUI_DisString_EN(40, 120, “WaveShare Electronic”, &Font24, LCD_BACKGROUND, BLUE);

^

LCD_GUI.cpp:599: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisString_EN(uint16_t, uint16_t, const char*, int*, uint16_t, uint16_t)’

GUI_DisString_EN(40, 180, “3.5inch TFTLCD”, &Font20, RED, BLUE);

^

LCD_GUI.cpp:602: error: cannot convert ‘sFONT* {aka _tFont*}’ to ‘int*’ for argument ‘4’ to ‘void GUI_DisNum(uint16_t, uint16_t, int32_t, int*, uint16_t, uint16_t)’

GUI_DisNum(40, 210, 1234567890, &Font16, LCD_BACKGROUND, BLUE);

^

exit status 1
‘sFont’ has not been declared

Dieser Bericht wäre detaillierter, wenn die Option
“Ausführliche Ausgabe während der Kompilierung”
in Datei → Voreinstellungen aktiviert wäre.

Hallo,

naja, Waveshare hat mir schn öfter Denkaufgaben mit ihren Demos-Sachen für den Arduino aufgegeben... Ich nutze die Displays hier, aber an den ESPs, da gibt es eine sehr gute Lib, die die kennt.

Wirf mal die Dateien aus ..Arduino/lib/Fonts direkt mit in den Sketchordner. Ist zwar unfein, hilft aber erstmal. Ich werde jetzt keins der Displays an einen UNO hängen, um zu testen, ob es sich meldet. Der hat mir für die Auflösung zu wenig Ram für komplexere Sachen und 20MHz SPI am ESP ist auch schneller. Mehr als 20MHz kann die SPI-Geschichte auf dem Display leider nicht.

Gruß aus Berlin Michael

Ich hatte das Display mal mit einem Nano ans Laufen gekriegt, ich habe es aber verworfen, weil es zu umständlich zu konfigurieren war und fast alle digitalen Pins belegt hatte. Seitdem schwöre ich auf Nextion. ;)

Wenn du das Display dennoch zum Laufen kriegen willst, musst du leider etwas basteln...

Da der Verkäufer das Produkt "für Arduino" bewirbt und in der Beschreibung:

Standard Arduino interface, compatible with development boards like : Arduino UNO, Leonardo, UNO PLUS, NUCLEO, XNUCLEO

sehe ich den Verkäufer in der Verantwortung zu erklähren wir man sein Produkt mit Arduino verwendet. Falls er das nicht macht / kann / will sehe ich das als ein Grund das Produkt in Garantie ( nicht Widerrufsrecht) zurückzugeben. Grüße Uwe

Garantie ist eine freiwillige Leistung des [u]Herstellers[/u]. Du meinst gesetzliche Gewährleistung.

Gruß Tommy

Tommy56: Garantie ist eine freiwillige Leistung des [u]Herstellers[/u]. Du meinst gesetzliche Gewährleistung.

Gruß Tommy

oder so.

Ich habe mal den Tipp von amithlon befolgt und nun ist schon mal etwas auf dem Display zusehen. Also bin ich erstmal beruhigt , das es erstmal funktioniert und nicht defekt ist. Allerdings funktioniert nur ein Demo-Sketch von WaveShare . Bei den anderen erscheint immer wieder die oben gezeigte Fehlermeldung. Nun heißt weitersuchen bzw. weiter probieren.

Gruß Jan

Jan74: Ich habe mal den Tipp von amithlon befolgt und nun ist schon mal etwas auf dem Display zusehen. Also bin ich erstmal beruhigt , das es erstmal funktioniert und nicht defekt ist. Allerdings funktioniert nur ein Demo-Sketch von WaveShare . Bei den anderen erscheint immer wieder die oben gezeigte Fehlermeldung. Nun heißt weitersuchen bzw. weiter probieren.

Ich habe mir nciht die Mühe gemacht, zu sortieren, was sich Waveshare dabei gedacht hat. Das ist keine Pfad-Struktur, mit der die ArduinoIDE real was anfangen kann. Kopiere den Font-Kram jeweils auch in die anderen Sketch-Ordner, dann sollten die sich auch melden. Alles außer der .ino gehört eigentlich in eine Ardiono-Librarie-Verpackung, die Fonts auch. Ist mir aber zuviel Aufwand, weil der Kram außer als Test sowieo keine sonderlichen sinnvollen Funktionen hat.

Bei diesen Displays wird SPI für die ILI9486 Parallelansteuerung mit Schieberegistern und Gattern auf dem Display-Modul erledigt, war eigentlich mal für die RasPis gedacht. Ich kenne aber außer den Libs für ESP8266/ESP32 keine, die diese Ansteuerung das für die AVR unterstützt. Ich habe aber auch nur kurz gesucht...

Gruß aus Berlin Michael