7" Sainsmart Touch Problem

Guten Tag zusammen,

ich habe ein 7" Sainsmart Kit gekauft mit einem Arduino Mega 2560 und einem TFT Shield (Müsste dieses gewesen sein: Sainsmart.

Um das Display anzusteuern benutze ich folgende Librarys: URTouch, UTFT, UTFT_Buttons.

Mein benutzter Sketch:

#include <UTFT.h>        // TFT Lib
#include <URTouch.h>        // Touch Lib
#include <UTFT_Buttons.h>     // Button Lib


extern uint8_t BigFont[];    // Zeichengroeße fuer Buttons und Text


// Instanzen
UTFT          myGLCD(CPLD,38,39,40,41);
URTouch        myTouch(6,5,4,3,2);
UTFT_Buttons  myButtons(&myGLCD, &myTouch);


#define TOUCH_ORIENTATION PORTRAIT //PORTRAIT,LANDSCAPE


// Diese Buttons werden in allen Menuebenen verwendet

unsigned int main_but1, main_but2,main_but3,main_but4;
int m_press;


void setup() {
// LCD starten

myGLCD.InitLCD(TOUCH_ORIENTATION); 
myGLCD.clrScr();
myGLCD.setFont(BigFont);
// Touch starten
myTouch.InitTouch();
myTouch.setPrecision(PREC_HI);
myButtons.setTextFont(BigFont);
}


void loop() {


// Hier beginnt die Abfrage der geklickten Buttons
while(1) 
{
  if (myTouch.dataAvailable() == true)
  {
    myTouch.read();
    m_press = myButtons.checkButtons();
    // Je nach ausgewahltem Button wird Funktion mit Parameter aufgerufen
    if (m_press==main_but1) 
      myGLCD.print("Touched", CENTER, LEFT, 0); //Höhe(800), Breite(480), Rotation;
     else
      myGLCD.print("       ", CENTER, LEFT, 0);
  }
}
}

Ich habe auf das Display einen simplen Button erstellt und das Display auf Portrait eingestellt (Im Landscape Modus habe ich keine Probleme).

Nun zu meinem Problem:

Das Touchfeld des Button ist nach rechts verschoben. Allerdings nur im Portrait Modus. Im Landscape Modus wird alles perfekt erkannt. Ich habe auch schon etliche Male neu kalibriert.

Hierzu einige Bilder:

Links in den Button gedrückt.

Rechts in den Button gedrückt.

Rechts neben den Button gedrückt.

Hier ist deutlich zu erkennen, dass das Touchfeld nach rechts verschoben ist. Oben- und Unterhalb des Buttons passt alles soweit.

Für Lösungsvorschläge und weitere Fragen bin ich gerne offen.
Ich bedanke mich schon einmal recht Herzlich.

Viele Grüße

Kann sein daß Du das Touchfeld kalibrieren mußt damit die Kontaktstelle mit der gemessenen Stelle zusammenfällt.

Male mal einen roten Punkt an die vom Arduino gemessene Stelle. Grüße Uwe

Hallo Uwe,

vielen Dank für deine blitzschnelle Antwort. Ich habe einen roten Punkt auf der berührten Fläche anzeigen lassen und bin zu folgendem Ergebnis gekommen:

Wie man sieht ist es im Landscape normal. |281x500

Beim Portrait sieht es da schon wieder anderst aus. |281x500

|281x500

Hab ich etwas vergessen einzustellen? Irgendwie stehe ich gerade auf dem Schlauch.

Gruß Marcel

Laut Dokumentation von UTFT Touch werden nur Touchfelder bis 3,2" unterstützt... schade, da Dispalys mit 7" ja als TFT unterstützt werden...

Ich stehe aktuell vor dem selben Problem, mit einem Display (was als TFT) auch von Henning Karlsen als OK gelistet wird- sein Standard- Argument, dass Sainsmart nix taugt und er es deshalb nicht unterstützt kann hier nicht greifen...

Ich werd mich irgendwann mal selbst an der library versuchen oder schauen was es bei Adafruit gibt...

Hallo, das ist doch ganz einfach... Erst einmal mußt Du feststellen, welcher Modus (Landscape, Portrait) vom Hersteller für das TFT vorgegeben ist. Datenblatt. Dann mußt Du feststellen, was denn die Lib daraus macht. Beispiel: x0, y0 oben links Landscape: x0 bis x320 y0 bis y240

Portrait: x0 bis x240 y0 bis y320

Durch Drehung des Display verdrehst Du auch x und y. Du mußt im Sketch bei der deklaration des Display die richtigen Koordinaten für x0 und y0 angeben. das ist das leichte. Dein Display sollte Pin´s für x+, x-, y+ und y- haben. Diese müssen richtig zum Display verdrahtet werden. Es nützt nichts, wenn Du x+ toucht- und der Touch auf x- geht. Du mußt (solltest) vorher entscheiden, in welchem Modus Du das Display betreibst. Drehen- wärend des Sketch ist nicht so einfach zu handhaben. Gruß und Spaß Andreas

Vielen Dank Andreas.

Du hattest die zündelnde Idee. Ich hab in der library einfach x und y getauscht und siehe da ich hab kein Problem mehr im Portrait Modus.

Perfekt vielen Dank für den Denkanstoß.