Probleme mit 7" TFT Kalibrierung

Hallo und frohe Weihnachten,

vielleicht kann mich jemand ja bei meinem Versuch mein Touchscreen zu kalibrieren etwas erleuchten.

Ich habe versucht mein Touch mittels der URTouch_Calibration zu kalibrieren. Bei meinem 3,2" TFT hat dies auch wunderbar funktioniert. Allerdings passen die mir gelieferten Werte überhaupt nicht zu meinem Display. Nach dem eintragen wird nicht ein Touch mehr erkannt.

Folgene Werte liefert mir die Kalibration:

#define CAL_X 0x01FEC7F8UL
#define CAL_Y 0x022E488DUL
#define CAL_S 0x001DF31FUL

Nach ein wenig guggeln, bin ich auf das Wiki von Sainsmart gestoßen, also habe ich mal die dort im Screen gezeigten Werte eingetragen.

#define CAL_X 0x0022CF59UL
#define CAL_Y 0x00670E5FUL
#define CAL_S 0x8031F1DFUL

Damit kann ich den Screen nun annähernd genau bedienen.

Wie kann ich nun an valide Werte kommen? Kann mir da vielleicht jemand einen Tip geben?

Mit bestem Dank und Gruß
Markus

Einen wunderschönen,

das Problem ist gelöst, es saß etwa 50cm entfernt vom Bildschirm :wink: Man sollte auch die richtige URTouchCD verwenden, in der LANDSCAPE eingetragen ist.

Einen schönen Tag noch.

Hi

Einen Wunderschönen zurück (bei uns scheint gerade die Sonne (das gelbe Dingens am Himmel) ... wärmt mir den Rücken :wink: )

Wärest Du so frei und würdest Deinen funktionierenden Sketch der Nachwelt zur Verfügung stellen?
Selber sagt mir das Alles nicht viel (weder Dein Problem, noch die Lösung).
Sofern die Lösung nicht nur aus einem Mausklick bestand (eben auf Auswahl der passenden Lib und Klick auf 'Landscale'), wäre Das ein feiner Zug von Dir.
Ggf. persönliche Daten vorher raus nehmen (GPS-Koordinaten sind nun mal recht zielführend).

Vorweg schon Mal Danke, daß Du Deine Lösung hier bisher zumindest genannt hast!

MfG

Viel gibt es bei dem Sketch (noch) nicht, aber gerne doch.

#include <UTFT.h>
#include <URTouch.h>

extern uint8_t SmallFont[];
extern uint8_t BigFont[];

UTFT myGLCD(CTE70,38,39,40,41);
URTouch myTouch(6,5,4,3,2);

  int x,y;
  int buf[318];

  void setup()
{
  randomSeed(analogRead(0));
  
// Setup LCD
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);
  HomeScreen();
}

void loop() 
{

      int x,y;
      int buf[318];
      if (myTouch.dataAvailable())
      {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
      
      myGLCD.setColor(255,0,0);  //roter Testpunkt
      myGLCD.fillCircle(x,y,6);
      }

      
           
      if ((x>=35) && (x<=285) && (y>=90) && (y<=130)) 
      { Button1();
      }
      
      if ((x>=30) && (x<=40) && (y>=135) && (y<=145))
      {
        Button2(); 
      }

      if ((x>=33) && (x<=41) && (y>=206) && (y<=214))
      {
        Button3(); 
      }
 }

Es handelt sich um folgendes Display:
7" TFT Display

und folgendes Shield:
TFT Shield

Da das Shield nicht ganz paßt, mußte ich noch 3,3V auf Pin2 des Shields legen.

Ich hatte, da ich mit mehreren Display hantiert habe, aber schlicht und ergreifend die falsche Datei (Sketch) der Kalibrierungsroutine aufgerufen und eben übersehen, das dort "PORTRAIT" hinterlegt war und eben nicht "LANDSCAPE".

Somit passen die Kalibrierdaten logischerweise vorn und hinten nicht.

Die roten Punkte im Sketch sind nur dazu da, um zu schauen ob es halbwegs paßt mt dem Touch.

Sorry,

da hats doch nur den halben Sketch kopiert. Nun also alles bislang. aber viel mehr ist da nicht.

#include <UTFT.h>
#include <URTouch.h>

extern uint8_t SmallFont[];
extern uint8_t BigFont[];

UTFT myGLCD(CTE70,38,39,40,41);
URTouch myTouch(6,5,4,3,2);

  int x,y;
  int buf[318];

  void setup()
{
  randomSeed(analogRead(0));
  
// Setup LCD
  myGLCD.InitLCD();
  myGLCD.clrScr();
  myTouch.InitTouch();
  myTouch.setPrecision(PREC_MEDIUM);
  HomeScreen();
}

void loop() 
{

      int x,y;
      int buf[318];
      if (myTouch.dataAvailable())
      {
      myTouch.read();
      x=myTouch.getX();
      y=myTouch.getY();
      
      myGLCD.setColor(255,0,0);  //roter Testpunkt
      myGLCD.fillCircle(x,y,6);
      }

      
           
      if ((x>=35) && (x<=285) && (y>=90) && (y<=130)) 
      { Button1();
      }
      
      if ((x>=30) && (x<=40) && (y>=135) && (y<=145))
      {
        Button2(); 
      }

      if ((x>=33) && (x<=41) && (y>=206) && (y<=214))
      {
        Button3(); 
      }
 }

//Eigene Funktionen
void HomeScreen() 
{
// Kopfzeile
    myGLCD.setBackColor(0,0,0);
    myGLCD.setColor(255,255,255);
    myGLCD.setFont(BigFont);
    myGLCD.print("7' TFT Test", CENTER,10); //Textausgabe
    myGLCD.setColor(255,0,0);
    myGLCD.drawLine(0,32,799,32);
    myGLCD.setColor(255,255,255);
    myGLCD.setFont(SmallFont);
    myGLCD.print("Mika's Weichenprojekt",CENTER,41);  //Textausgabe
    
// Button 1
    myGLCD.setColor(16,167,103);
    myGLCD.fillRoundRect(35,90,285,130);
    myGLCD.setColor(255,255,255);
    myGLCD.drawRoundRect(35,90,285,130);
    myGLCD.setFont(BigFont);
    myGLCD.setBackColor(16,167,103);
    myGLCD.print("Button 1",CENTER,102);  //Textausgabe

// Button 2
    myGLCD.setColor(16,167,103);
    myGLCD.fillCircle(35,140,10);
    myGLCD.setColor(255,255,255);
    myGLCD.drawCircle(35,140,10);
    myGLCD.setFont(BigFont);
    myGLCD.setBackColor(16,167,103);
    myGLCD.print("Button 2",CENTER, 152);  //Textausgabe

// Button 3
    myGLCD.setColor(16,167,103);
    myGLCD.fillCircle(37,210,8);
    myGLCD.setColor(255,255,255);
    myGLCD.drawCircle(37,210,8);
    myGLCD.setFont(SmallFont);
    myGLCD.setBackColor(16,167,103);
    myGLCD.print("Button 3",CENTER, 203);  //Textausgabe
}


// Unterfunktionen definieren
    void Button1(){
    myGLCD.clrScr();
    myGLCD.setColor(16,167,103);
    myGLCD.fillRoundRect(35,90,285,130);
    myGLCD.setColor(255,255,255);
    myGLCD.drawRoundRect(35,90,285,130);
    myGLCD.setFont(SmallFont);
    myGLCD.setBackColor(265,165,0);
    delay(2000);
    myGLCD.clrScr();
    HomeScreen();
}

    void Button2()  {
    myGLCD.clrScr();
    HomeScreen();

}    

    void Button3()  {
    myGLCD.clrScr();
    HomeScreen();
}