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