3,5" TFT Display Whitescreen nach einer Sekunde

Hallo!

Leider habe ich im Internet keine passende Lösung zu meinem Problem gefunden, weshalb ich nun euch um Rat fragen muss.

Letzte Woche habe ich mir ein 3,5" TFT Display Bestellt und nun ist es endlich da! Selbstverständlich wurde es direkt in Betrieb genommen, aber leider nur mit kleineren Erfolgen. Nun erstmal der Code:

#include <UTFTGLUE.h>              
#include <TouchScreen.h>


#define MINPRESSURE 50
#define MAXPRESSURE 800


UTFTGLUE tft(0,A2,A1,A3,A4,A0);
TSPoint tp;

const int XP = 8, YP = A3, XM = A2, YM = 9;
const int TS_LEFT = 907, TS_RT = 136, TS_TOP = 942, TS_BOT = 139;
int pixel_x, pixel_y;
uint8_t Orientation = 0;
char COM[10];


TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);

void setup()
{
  Serial.begin(9600);
  pinMode(YP, OUTPUT);    
  pinMode(XM, OUTPUT);
  digitalWrite(YP, HIGH);  
  digitalWrite(XM, HIGH);
  randomSeed(analogRead(0));
  tft.InitLCD();
  menu();
}

void loop()
{
  tp = ts.getPoint();
  if(tp.z >= 50 && tp.z <= 800){
    //
    pixel_x = map(tp.x, TS_LEFT, TS_RT, 0, tft.width());
    pixel_y  = map(tp.y, TS_TOP, TS_BOT, 0, tft.height());
    //Serial.print("X: ");Serial.println(tp.x); 
    //Serial.print("Y: ");Serial.println(tp.y);
    //Serial.print("Druck: ");Serial.println(tp.z);
  }
  else{
    Serial.println(" ");
  }
}
void menu(){
  //
  tft.clrScr();
  tft.setTextSize(3);
  tft.fillScr(0, 0, 0);
  tft.setColor(255, 255, 0);
  tft.print("Temp", 20, 5);
  tft.print("Rlf", 160, 5);
  tft.print("Infos", 80, 165);
  //
  tft.setColor(255, 255, 255);
  tft.drawLine(240, 0, 240, 320);
  tft.drawLine(241, 0, 241, 320);
  tft.drawLine(242, 0, 242, 320);
  //
  tft.drawLine(0, 30, 480, 30);
  tft.drawLine(0, 31, 480, 31);
  tft.drawLine(0, 32, 480, 32);
  //
  tft.drawLine(121, 0, 121, 160);
  tft.drawLine(120, 0, 120, 160); 
  tft.drawLine(119, 0, 119, 160);
  //
  tft.drawLine(0, 159, 240, 159);
  tft.drawLine(0, 160, 240, 160); 
  tft.drawLine(0, 161, 240, 161);
  //
  tft.drawLine(130, 95, 110, 95);
  tft.drawLine(130, 94, 110, 94);
  tft.drawLine(130, 96, 110, 96);
  //
  for(int i=110; i <= 132; i++){
    tft.drawLine(121, 30, i, 45);
  }
  for(int i=109; i <= 131; i++){
    tft.drawLine(120, 160, i, 145); 
  }
  //
  tft.drawLine(78, 160, 78, 192);
  tft.drawLine(77, 160, 77, 192);
  tft.drawLine(76, 160, 76, 192);
  //
  tft.drawLine(170, 160, 170, 192);
  tft.drawLine(171, 160, 171, 192);
  tft.drawLine(172, 160, 172, 192);
  //
  tft.drawLine(170, 190, 78, 190);
  tft.drawLine(170, 191, 78, 191);
  tft.drawLine(170, 192, 78, 192);
}

Und nun zu meinem Problem:

Wenn ich die Funktion menu(); Im setup aufrufe, funktioniert alles und der Bildschirm resetet sich nicht. Jedoch wenn ich die Funktion im loop aufrufe, wird das Menü für eine Sekunde angezeigt, dann wird der bildschirm nach ca. 1 Sekunde wieder Weiß. Das gleiche passiert, wenn ich versuche das TFT-Display direkt über die loop Funktion anzusprechen.
Leider bin ich Ratlos!

Ich freue mich schon auf eure Antworten!
Mfg

Welches Display? (Link bitte)
Wie versorgst Du es? Hoffentlich nicht aus dem Arduino.

Gruß Tommy

Hallo,

ich benutze dieses Display. Da es ein shield ist, sollte es doch okay sein es über den Arduino mit Strom zu versorgen, oder Irre ich mach da? :slight_smile:

Mfg

Lelek22:
ich benutze dieses Display. Da es ein shield ist, sollte es doch okay sein es über den Arduino mit Strom zu versorgen, oder Irre ich mach da? :slight_smile:

Na prima. Ein Ding ohne Datenblatt von einem Händler in Shanghai.

So wie das gebaut ist, würde ich mir wegen der Energieversorgung wohl auch keine Sorgen machen. Was meinst Du mit „wird wieder weiß“? Meinst Du evtl. „schwarz“, weil die Hintergrundbeleuchtung ausgeht oder wirklich „weiß“, weil die angezeigten Pixel wieder gelöscht werden (und die Beleuchtung eingeschaltet bleibt)?

Passiert das auch, wenn Du im obigen Sketch nach menu(); noch die Zeile

while(1){}

einfügst?

Gruß

Gregor