Probleme mit SainSmart 7" 7 Inch TFT LCD Shield+TFT LCD Shield for Arduino MEGA

Hallo liebe Community,

ich versuche seit geraumer Zeit folgendes Display von Sainsmart zum laufen zu bringen:

http://www.ebay.de/itm/221452143308?_trksid=p2060353.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Leider ohne Erfolg. Ich bitte darum um eure Hilfe.

Ich verwende einen Arduino Mega 2560 und habe von dem Händler diesen link für die library erhalten:

https://s3-ap-northeast-1.amazonaws.com/sain-amzn/20/20-011-D30/7.0+TFT.zip

Darauf habe ich bereits folgende Schritte nach Anleitung durchgeführt:

  1. Verbindung des Arduino Mega 2560 mit dem TFT Shield.
  2. Verbindung des 7” TFT LCD mit dem Shield und anschließende Verbindung mit dem PC über ein USB Kabel.
  3. Entpacken des UTFT-files, und kopieren des Ordners in den Liabary Ordner.
  4. Öffnen des Beispiels und uploaden auf den Arduino:

hier der Beispiel Code:

// UTFT_Demo_800x480 (C)2012 Henning Karlsen
// web: http://www.henningkarlsen.com/electronics
//
// This program is a demo of how to use most of the functions
// of the library with a supported display modules.
//
// This demo was made for modules with a screen resolution 
// of 800x480 pixels.
//
// This program requires the UTFT library.
//

#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];

// Uncomment the next line for Arduino 2009/Uno
//UTFT myGLCD(ITDB43,19,18,17,16);   // Remember to change the model parameter to suit your display module!

// Uncomment the next line for Arduino Mega
UTFT myGLCD(CTE70,38,39,40,41);   // Remember to change the model parameter to suit your display module!

void setup()
{
randomSeed(analogRead(0));

// Setup the LCD
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
}

void loop()
{
int buf[798];
int x, x2;
int y, y2;
int r;

// Clear the screen and draw the frame
myGLCD.clrScr();

myGLCD.setColor(255, 0, 0);
myGLCD.fillRect(0, 0, 799, 13);
myGLCD.setColor(64, 64, 64);
myGLCD.fillRect(0, 466, 799, 479);
myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(255, 0, 0);
myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1);
myGLCD.setBackColor(64, 64, 64);
myGLCD.setColor(255,255,0);
myGLCD.print("<http://electronics.henningkarlsen.com>", CENTER, 467);

myGLCD.setColor(0, 0, 255);
myGLCD.drawRect(0, 14, 799, 465);

// Draw crosshairs
myGLCD.setColor(0, 0, 255);
myGLCD.setBackColor(0, 0, 0);
myGLCD.drawLine(399, 15, 399, 464);
myGLCD.drawLine(1, 239, 798, 239);
for (int i=9; i<790; i+=10)
  myGLCD.drawLine(i, 237, i, 242);
for (int i=19; i<470; i+=10)
  myGLCD.drawLine(397, i, 402, i);

// Draw sin-, cos- and tan-lines  
myGLCD.setColor(0,255,255);
myGLCD.print("Sin", 5, 15);
for (int i=1; i<798; i++)
{
  myGLCD.drawPixel(i,239+(sin(((i*1.13)*3.14)/180)*200));
}

myGLCD.setColor(255,0,0);
myGLCD.print("Cos", 5, 27);
for (int i=1; i<798; i++)
{
  myGLCD.drawPixel(i,239+(cos(((i*1.13)*3.14)/180)*200));
}

myGLCD.setColor(255,255,0);
myGLCD.print("Tan", 5, 39);
for (int i=1; i<798; i++)
{
  myGLCD.drawPixel(i,239+(tan(((i*0.9)*3.14)/180)));
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);
myGLCD.setColor(0, 0, 255);
myGLCD.setBackColor(0, 0, 0);
myGLCD.drawLine(399, 15, 399, 464);
myGLCD.drawLine(1, 239, 798, 239);

// Draw a moving sinewave
x=1;
for (int i=1; i<(798*20); i++) 
{
  x++;
  if (x==799)
    x=1;
  if (i>799)
  {
    if ((x==399)||(buf[x-1]==239))
      myGLCD.setColor(0,0,255);
    else
      myGLCD.setColor(0,0,0);
    myGLCD.drawPixel(x,buf[x-1]);
  }
  myGLCD.setColor(0,255,255);
  y=239+(sin(((i*1.65)*3.14)/180)*(200-(i / 100)));
  myGLCD.drawPixel(x,y);
  buf[x-1]=y;
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random filled rectangles
for (int i=0; i<50; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=2+random(746);
  y=16+random(397);
  x2=x+50;
  y2=y+50;
  myGLCD.fillRect(x, y, x2, y2);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random filled, rounded rectangles
for (int i=0; i<50; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=2+random(746);
  y=16+random(397);
  x2=x+50;
  y2=y+50;
  myGLCD.fillRoundRect(x, y, x2, y2);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random filled circles
for (int i=0; i<50; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=27+random(746);
  y=41+random(397);
  myGLCD.fillCircle(x, y, 25);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some lines in a pattern
myGLCD.setColor (255,0,0);
for (int i=15; i<463; i+=5)
{
  myGLCD.drawLine(1, i, (i*1.66)-10, 463);
}
myGLCD.setColor (255,0,0);
for (int i=463; i>15; i-=5)
{
  myGLCD.drawLine(798, i, (i*1.66)+30, 15);
}
myGLCD.setColor (0,255,255);
for (int i=463; i>15; i-=5)
{
  myGLCD.drawLine(1, i, 770-(i*1.66), 15);
}
myGLCD.setColor (0,255,255);
for (int i=15; i<463; i+=5)
{
  myGLCD.drawLine(798, i, 810-(i*1.66), 463);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random circles
for (int i=0; i<250; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=32+random(736);
  y=45+random(386);
  r=random(30);
  myGLCD.drawCircle(x, y, r);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random rectangles
for (int i=0; i<250; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=2+random(796);
  y=16+random(447);
  x2=2+random(796);
  y2=16+random(447);
  myGLCD.drawRect(x, y, x2, y2);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

// Draw some random rounded rectangles
for (int i=0; i<250; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=2+random(796);
  y=16+random(447);
  x2=2+random(796);
  y2=16+random(447);
  myGLCD.drawRoundRect(x, y, x2, y2);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

for (int i=0; i<250; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  x=2+random(796);
  y=16+random(447);
  x2=2+random(796);
  y2=16+random(447);
  myGLCD.drawLine(x, y, x2, y2);
}

delay(2000);

myGLCD.setColor(0,0,0);
myGLCD.fillRect(1,15,798,464);

for (int i=0; i<10000; i++)
{
  myGLCD.setColor(random(255), random(255), random(255));
  myGLCD.drawPixel(2+random(796), 16+random(447));
}

delay(2000);

myGLCD.fillScr(0, 0, 255);
myGLCD.setColor(255, 0, 0);
myGLCD.fillRoundRect(320, 190, 479, 289);

myGLCD.setColor(255, 255, 255);
myGLCD.setBackColor(255, 0, 0);
myGLCD.print("That's it!", CENTER, 213);
myGLCD.print("Restarting in a", CENTER, 239);
myGLCD.print("few seconds...", CENTER, 252);

myGLCD.setColor(0, 255, 0);
myGLCD.setBackColor(0, 0, 255);
myGLCD.print("Runtime: (msecs)", CENTER, 450);
myGLCD.printNumI(millis(), CENTER, 465);

delay (10000);
}

Der Code weist keine Fehler auf, jedoch nach der Übertrag bleibt der Bildschirm des Displays weiß.
Lediglich die Hintergrundbeleuchtung funktioniert.

Nach mehrmaligem Nachfragen beim Händler habe ich jeweils ein Ersatzdisplay und ein Ersatz Shield erhalten. Jedoch brachte das nicht den gewünschten Erfolg.

Außerdem habe ich bereits verschiedene Versionen der Arduino Umgebungssoftware ausprobiert.
1.5.2, 1.5.6 und die aktuellste 1.6.

Hat jemand von euch noch eine Idee woran es liegen könnte, dass der Beispielsketch nicht funktioniert?

Vielen Dank für eure Antworten.

Gruß
Guybrush

Keiner eine Idee?

Probiere mal

UTFT myGLCD(CTE70,25,26,27,28);

Wenn auch nicht wirst du selber herausfinden welche der Pins richtig sind

Hey mpl1337,

danke für deinen Vorschlag,

die Pins 25-28 waren`s leider auch nicht.

Display bleibt weiterhin weiß!

Gibt´s irgendwie ne Methode, wie ich testen kann, ob ich die richtigen Pins verwende?
(Zum Ausprobieren, gibt es wohl zu viele Möglichkeiten).

Messgerät hätte ich da!

Gruß

Das Angebot ist etwas komisch
Da wird von einem 7" Display gesprochen, aber auch von einem 5".

Was sagt der Händler?

Weiß er wie das Display anzusteuern ist und welche Bibiothek mit welchen Pins zu verwenden sind?
Hat er Dir die Bibliothek und den Beispielsketch gegeben?

Grüße Uwe

Hallo Uwe,

vom Händler bekam ich folgende Antwort, nachdem ich mich gemeldet hab, weil das Demo nicht funktionierte:

Dear customer,
Thanks for contacting us and sorry for my late reply due to TIME DIFFERENCE.
As for your problem, after you download our tutorial, please check whether there is "readme", and follow the steps of "readme".
The code do NOT need to change. Just follow the "readme" and put in the lib in a right way. If the compiler is no problem, then it will be programmed into the display.

If you still have any question, plz feel free to ask. We are always ready to help^^
Have a nice day!
Warm Regards,
Christy

Habe die Schritte in der readme Datei befolgt.
Da ich jedoch beim Upload des Beispielsketches eine Fehlermeldung bekommen habe, wendete ich mich nochmals an den Händler. Darauf diese Antwort:

Dear customer,
Thanks for your reply.
As for your problem, our technician says that this is the software code problem.
You need to use version1.5 software to compile.
If you use 1.5 version but so still have problem, maybe the item is defective.
Please reply to get further process.
Looking forward to your response.
If you still have any question, plz feel free to ask. We are always ready to help^^
Have a nice day!
Warm Regards,
Christy

Ich habe es darauf mit der Version 1.5.2 und 1.5.6 versucht. Mit beiden Versionen könnte ich den Sketch uploaden, jedoch reagierte das Display immernoch nicht!

Drauf hat mir der Händler erst ein neues Shield geschickt und eine Woche später auch ein neues Display, um einen Defekt der Geräte auszuschließen.

Wie es aussieht bin also nun nicht nur ich, sondern auch der Händler ratlos, woran es noch liegen könnte.

Hast du mal eine aktuelle Version der Library probiert:
http://www.rinkydinkelectronics.com/library.php?id=51

Geht davon dass die nicht vom Hersteller irgendwie modifiziert wurde

Ich verwende erfolgreich in der UTFT den Konstruktor

UTFT myGLCD(20, 25, 26, 27, 28); //7 Zolll Display

Allerdings mit dem Arduino Due. Das dürfte auch für den Mega funktionieren.

Hallo
genau das Display habe ich im Einsatz, sowohl als 5" als auch als 7".
Laufen eigentlich super.
Lad dir mal die Librarys von der Seite http://www.rinkydinkelectronics.com/
herunter.
UTFT
UTouch
UTFT_Buttons
Wichtig ist, das du das Display calibrieren musst, ein entsprechender Sketch ist dabei.
Falls du noch Fragen hast melde dich, auf jeden Fall geht alles mit dem Display, auch Touch.

allerdings kann ich die Aussage von franz0815 nicht bestätigen, beim 7" TFt Display von Sainsmart musst du folgendes deklarieren:

UTFT myGLCD(CTE70,38,39,40,41); // 7 Zoll LCD
UTouch myTouch(6,5,4,3,2);

Gruß

Aktuelle Version der liabary und der Konstruktor von franz0815 haben nichts gebracht.

Also nochmal einen Versuch von ganz vorne gestartet und meine Schritte aufgezeichnet.

hier das Video dazu, in dem man Schritt für Schritt sieht was ich gemacht habe:

Vielleicht sieht jemand von euch, was ich vergessen habe, oder welchen Fehler ich gemacht habe.

Bin über jede Antwort dankbar!

Gruß
Guybrush

Was ist denn mit meinen Daten und dem Kalibriersketch.
Die Daten von franz0815 können nicht gehen, die sind nicht für den Mega

Hey maverick1509,

der Kalibriersketch lässt sich nicht starten. Bzw. wird wieder mal nichts auf dem Display angezeigt:

in dem UTOUCH Ordner befindet sich die Datei UTouchCD.h:

// UTouchCD.h
// ----------
//
// Since there are slight deviations in all touch screens you should run a
// calibration on your display module. Run the UTouch_Calibration sketch
// that came with this library and follow the on-screen instructions to
// update this file.
//
// Remember that is you have multiple display modules they will probably
// require different calibration data so you should run the calibration
// every time you switch to another module.
// You can, of course, store calibration data for all your modules here
// and comment out the ones you dont need at the moment.
//

// These calibration settings works with my ITDB02-3.2S.
// They MIGHT work on your 320x240 display module, but you should run the
// calibration sketch anyway. If you are using a display with any other
// resolution you MUST calibrate it as these settings WILL NOT work.
#define CAL_X 0x00378F66UL
#define CAL_Y 0x03C34155UL
#define CAL_S 0x000EF13FUL

So wie ich das verstehe müssen die unteren 3 Zeilen des Sketchs geändert werden. Aber wie soll das funktionieren, wenn ich die Kalibrierung nicht durchführen kann?

Die Kalibrierung ist für den Touch Screen. Du hast in der Tat grundlegendere Probleme.

Da hast du natürlich recht, aber dann wird zumindest schon mal text und die Kreuze in allen Ecken angezeigt.
Aber scheint wirklich ein komplett anderes Problem zu sein, denn im Video ist alles richtig gemacht worden.

Ok, dann werde ich mir wohl ein anderes Display besorgen müssen.
Hat jemand einen Tipp für mich? 5" oder 7" mit passendem shield wäre gut?!
Diesmal am besten keines aus China :wink:

Mein Freund, alles ist aus China :wink:

Hallo,

mir ist heute eine evtl. Ursache aufgefallen, warum mein Display nicht funktionieren könnte.
Auf dem Shield sind die Spannungen für Jumper1 - Jumper8 aufgedrukt.

JP1 5V
JP2 3,3V
JP3 5V
JP4 3,3V
.
.
.
JP7 5V
JP8 3V

Ich habe mal nachgemessen.
An allen Jumpern liegt genau 5V.

Das darf doch nicht sein, oder?

Kommt darauf an wie das gemeint ist. Die Displays laufen mit 3,3V. Eine Aufgabe dieser Shields ist es die 5V vom Mega auf 3,3V umzusetzen.

Du könntest auch mal bei Saintsmart anfragen. Die wissen wahrscheinlich mehr als der eBay Verkäufer.

ja, das werd ich machen!

Also das Display funktioniert. Das Shield dazu hab ich leider nicht bekommen.
Erst mit Kabel verbunden, läuft.
Habe also ein Shield >>hier<< gekauft, UTFT_Demo_800x480 geladen, alles angestöpselt, läuft.
Versand des Shields hat 7 Tage gedauert, ab dem Bestelldatum.