Probleme mit TFT LCD Display 1.77" mit Uno R3 - Fehler in TFT - Lib

Hallo liebes Arduino Forum,

seit einiger Zeit versuche ich ein TFT-Display mit einem Arduino Uno R3 zu betreiben.
Dabei handelt es sich um folgendes Display:

https://www.reichelt.de/Weiteres-Zubehoer/ARDUINO-TFT-LCD/3/index.html?ACTION=3&GROUPID=6671&ARTICLE=152634

Als ersten Test wollte ich folgenden Sketch auf den Arduino laden:

Dabei ist mir aufgefallen, dass ich meine Arduino IDE auf einen neueren Stand bringen muss. Da ich die IDE auf einem Raspberry Pi betreibe, habe ich folgende Schritte ausgeführt:

https://www.hackerspace-ffm.de/wiki/index.php?title=Arduino_1.0.6_auf_Raspberry_Pi_installieren

Dies hat, trotz einiger kleiner Probleme beim entpacken, die ich aber umgehen konnte, auch soweit funktioniert.

Wenn ich jedoch den Sketch testweise in der IDE kompiliere, erhalte ich folgende Fehlermeldung:

In file included from /usr/share/arduino/libraries/TFT/TFT.h:7:0,
from _TFT_Test__17_10_29.ino:1:
/usr/share/arduino/libraries/TFT/utility/Adafruit_ST7735.h:28:26: fatal error: Adafruit_GFX.h: Datei oder Verzeichnis nicht gefunden
#include <Adafruit_GFX.h>
^
compilation terminated.

Die Bibliotheken Adafruit_ST7735.h und Adafruit_GFX.h sind aber in dem in der Fehlermeldung beschriebenen Pfad enthalten.

Der Code zu dem Problem ist,wie im entsprechenden Link, folgender:

#include <TFT.h> // Hardware-specific library
#include <SPI.h>

#define CS   10
#define DC   9
#define RESET  8

TFT myScreen = TFT(CS, DC, RESET);

void setup(){
  myScreen.begin();  
  myScreen.background(0,0,0);  // clear the screen with black
  delay(1000);  // pause for dramatic effect
}

void loop(){
  myScreen.stroke(255, 0, 0); // set the stroke color to red
  myScreen.line(0, 10, myScreen.width(), 10); // draw a line across the screen
  delay(1000);

  myScreen.noStroke(); // don't draw a line around the next rectangle
  myScreen.fill(0,255,0); // set the fill color to green
  myScreen.rect(0,20,myScreen.width(),10); //draw a rectangle across the screen
  delay(1000);

  myScreen.fill(0,0,255); // set the fill color to blue
  myScreen.stroke(255,255,255); // outline the rectangle with a white line
  myScreen.rect(0,45,myScreen.width(),45); // draw a fat rectangle
  delay(1000);

  myScreen.background(0,0,0); // clear the screen before starting again
  delay(1000); 
}

Das gleiche Problem bekomme ich mit anderen Beispiel-Sketch's, die mir die IDE anbietet.

Ein einfaches Einfügen von

#include <Adafruit_GFX.h>

schafft allerdings auch keine Abhilfe und sorgt nur für weitere Fehlermeldungen.

Bin jetzt schon seit einigen Stunden am surfen um Problemlösungen zu suchen, doch die waren bisher nicht zielführend.

Ich verzichte an dieser Stelle mal darauf, die bisherigen Ansätze zu beschreiben. Ich danke, das würde die Länge des Posts nur unnötig in die Höhe treiben. Habe aber alles soweit wieder rückgängig gemacht.

Ich hoffe, mir kann jemand helfen.

Danke im Voraus, Sebastian

Vermutlich hast du die jeweilige Datei direkt in den Library-Ordner kopiert.
Du musst aber einen Unterordner anlegen, der den Namen der Library trägt.
Und es gehört noch eine weitere Datei mit der Endung cpp dazu, die auch in den Ordner gehört.

Hallo HotSystems,

erstmal danke für die Antwort.

die weitere Datei mit Endung .cpp ist bei beiden Bibliotheken im gleichen Ordner mitenthalten, auch wenn ich es eben nicht explizit dazugeschrieben hab.

Wie meinst du das mit dem Unterordner? Die beiden .h und .cpp Dateien liegen exakt in dem in der Fehlermeldung genannten Pfad:
/usr/share/arduino/libraries/TFT/utility/"Dateiname"

Da gehören sie aber nicht hin, sondern in den Lib-Ordner im Sketchbook.

Gruß Tommy

Okay.

Schätze mal, dass das schonmal sehr hilfreich ist. Werde morgen Mal ausprobieren das zu fixen.

Thommy, vielen Dank schonmal!

Hallo,

habe jetzt versucht das Problem in den Griff zu bekommen indem ich die erwähnten Dateien auf verschiedenste Weisen versucht hab in die Ordner

/home/pi/sketchbook/lib

bzw.

/home/pi/sketchbook/libraries

zu kopieren. Ich habe jeweils versucht die Dateien

Adafruit_GFX.cpp
Adafruit_GFX.h
Adafruit_ST7735.cpp
Adafruit_ST7735.h

direkt in eine der beiden Ordner zu kopieren, als auch den Ordner und die Dateien

utility + TFT.cpp + TFT.h

in eine der beiden Ordner zu kopieren.

Jedes mal erscheint die oben beschriebene Fehlermeldung.

Wenn Ihr meint, es läge an dem Speicherort der beiden Bibliotheken, könntet ihr mir genaue Pfade schicken in denen ich die Dateien anzulegen habe?

Wie Raspbian meine Datei-Struktur angelegt hat, sollte ja aus den bisherigen Posts ersichtlich sein.

Danke für die Mühe, Sebastian

Du solltest Dir mal ein paar Grundkenntnisse aneignen, z.B. wie man Libs installiert.

Und nicht vergessen, Deine Fehlversuche wieder zu löschen.

Gruß Tommy

Hi Thommy,

die Seite hinter deinem Link hatte ich auch schon gefunden, habe Sie jetzt aber nochmal etwas aufmerksamer durchgelesen.

Ich denke nicht, dass das Problem eine falsch installierte TFT Lib ist. Diese taucht ja in der IDE unter Sketch->Library importieren auf. Habe jetzt dennoch den 3.beschrieben Weg in deinem Link durchgeführt. Jetzt hab ich halt noch ein zweites mal die Möglichkeit über den genannten weg die TFT-lib in den Sketch zu inkludieren.

Dadurch ändert sich aber nichts.

Die IDE erkennt im Code die lib ja auch. (mit #include <TFT.h> wird das "TFT" ja auch farblich hervorgehoben)

Die TFT-lib besteht ja, unter anderem, aus den Adafruit_GFX.h und Adafruit_ST7735.h Bibliotheken und da scheint ja in irgend einer Weise ein Verweis oder sowas zu fehlen. Im TFT-lib Ordner sind sie ja vorhanden.

Danke nochmal für eure bisherigen Bemühungen aber wie gesagt: ich hab schon ein paar Stunden Recherche hinter mir.

Gruß Sebastian

Jetzt hab ich halt noch ein zweites mal die Möglichkeit über den genannten weg die TFT-lib in den Sketch zu inkludieren.

Das könnte Dein Problem sein. Ich hatte geschrieben: Die Fehlversuche vorher löschen.
Wir können nicht auf Deinen Rechner schauen und sind nur auf Deine Infos angewiesen. Je schlechter diese sind, um so weniger wird man Dir helfen können.

Gruß Tommy

Hey Thommy,

ich hatte alle Fehlversuche gelöscht. Die zweite Möglichkeit über das Menu "Sketch->Bibliothek einbinden" die TFT-lib in den Code zu inkludieren ist erst enstanden, nachdem ich mich in die Grundkenntnisse genauer eingelesen habe, wie du es mir empfohlen hast. Das konnte also nicht mit dem eigentlichen Problem zusammenhängen.

Wie dem auch sei....

Ich hab jetzt nen recht rabiaten weg gewählt und das Problem in den Griff bekommen.

Ich habe den Raspberry Pi per zuvor gespeichertem Image auf meinem Windows-PC auf einen älteren Stand zurückgesetzt. Auf den Stand, bevor ich die Arduino IDE installiert hab. Also alles auf 0.

Habe mich dann dazu entschieden die Arduino IDE über folgenden Weg zu installieren:

https://usysto.net/arduino-ide-auf-raspberry_664

Da dies gleich eine neuere Version ist, in der die TFT-lib direkt enthalten ist, dachte ich mein Problem zu umgehen.

Dies hat auch Funktioniert. Das eingestellte Programm aus meinem ersten Post läuft einwandfrei.

Allerding lässt sich die IDE nicht erneut öffnen, wenn man sie einmal geschlossen hat. Das Problem ist, dass der Kollege von usysto.net die IDE in ein falsches Verzeichnis installiert hat.

Habe daraufhin den Dateimanager mit Root ausgeführt ("sudo pcmanfm" im Terminal eingeben) und den Dateiordner mit meiner Arduino IDE version in das Verzeichnis /usr/share/ verschoben.

Der gesamte Pfad heißt jetzt (für die Arduino IDE Version 1.8.5)

/usr/share/arduino-1.8.5

Nun musste der Shortcut (die Verknüpfung) auf dem Desktop noch mit dem neuen Pfad verbunden werden. Dies kann per rechtem Mausklick auf das Arduino IDE Symbol auf dem Desktop unter dem Menupunkt "Dateieigenschaften" geschehen.
Unter dem Reiter ".desktop-Datei Eintrag", des sich dann öffnenden Fensters, muss unter "Befehl" die ausführbare Datei der Arduino IDE eingegeben werden. Bei mir ist das folgender Pfad:

/usr/share/arduino-1.8.5/arduino

Nun klappt alles. Habe das jetzt deshalb so ausführlich beschrieben, falls noch jemand die Arduino IDE auf dem RasPi installieren will und einen der genannten Wege einschlagen will. Fazit: Finger Weg von der Art und Weise, wie es in dem Link in meinem ersten Post passiert ist.

Danke nochmal an die Bemühungen aller, die sich mit meinem Problem hier auseinander gesetzt haben.

Gruß Sebastian

P.S. Wie kann ich jetzt den Thread als "gelöst" oder so markieren?