Habe es jetzt hin bekommen.
Ich stell hier den code mal ein falls jemand mit dem display auch probleme hat.
Die werte sind schon etwas komisch.
Funktionieren mit meinem Display aber perfekt.
#include <Elegoo_GFX.h>
#include <Elegoo_TFTLCD.h>
#include <TouchScreen.h>
// Farbe definieren
#define BLACK 0x0000
#define NAVY 0x000F
#define DARKGREEN 0x03E0
#define DARKCYAN 0x03EF
#define MAROON 0x7800
#define PURPLE 0x780F
#define OLIVE 0x7BE0
#define LIGHTGREY 0xC618
#define DARKGREY 0x7BEF
#define BLUE 0x001F
#define GREEN 0x07E0
#define CYAN 0x07FF
#define RED 0xF800
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
#define ORANGE 0xFD20
#define GREENYELLOW 0xAFE5
#define PINK 0xF81F
// Button 1
#define BUTTON1_X 20 // Von Links
#define BUTTON1_Y 20 // Von Oben
#define BUTTON1_W 280
#define BUTTON1_H 40
#define BUTTON1_TEXTSIZE 3
#define FRAME1_X 19 // Von Links
#define FRAME1_Y 19 // Von Oben
#define FRAME1_W 282
#define FRAME1_H 42
// Button 2
#define BUTTON2_X 20 // Von Links
#define BUTTON2_Y 70 // Von Oben
#define BUTTON2_W 280
#define BUTTON2_H 40
#define BUTTON2_TEXTSIZE 3
#define FRAME2_X 19 // Von Links
#define FRAME2_Y 69 // Von Oben
#define FRAME2_W 282
#define FRAME2_H 42
// Button 3
#define BUTTON3_X 20 // Von Links
#define BUTTON3_Y 120 // Von Oben
#define BUTTON3_W 280
#define BUTTON3_H 40
#define BUTTON3_TEXTSIZE 3
#define FRAME3_X 19 // Von Links
#define FRAME3_Y 119 // Von Oben
#define FRAME3_W 282
#define FRAME3_H 42
// Textzeile
#define TEXTZEILE_X 19 // Von Links
#define TEXTZEILE_Y 169 // Von Oben
#define TEXTZEILE_W 282
#define TEXTZEILE_H 42
// Wird benötigt für touchscreen
#define YP A3 // muss ein analog pin sein
#define XM A2 // muss ein analog pin sein
#define YM 9 // kann ein digital pin sein
#define XP 8 // kann ein digital pin sein
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
// Touch ILI9341
//#define TS_MINX 120
//#define TS_MAXX 900
//#define TS_MINY 70
//#define TS_MAXY 920
#define TS_MINX 100
#define TS_MAXX 1210
#define TS_MINY 70
#define TS_MAXY 700
#define LCD_CS A3 // Chip Select Analog 3
#define LCD_CD A2 // Command/Data Analog 2
#define LCD_WR A1 // LCD schreiben Analog 1
#define LCD_RD A0 // LCD lesen Analog 0
#define LCD_RESET A4 // reset pin
Elegoo_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
int INTERVAL = 200; // Intervalzeit button entprellen
void setup() {
Serial.begin(9600);
tft.reset();
tft.begin(0x9341);
tft.setRotation(3); // Darstellung Landscape
tft.setTextSize(3);
tft.fillScreen(BLACK);
tft.setTextColor(WHITE);
// feiner roter rahmen um das bild
tft.drawRoundRect(10, 10, 300, 220, 10, RED); //von links, von oben, breite, höhe, radius
// Trennlinie unten
tft.drawLine(10, 165, 308, 165, RED); //von links, von oben, länge, von oben
// Zeichnet den ersten button
// Feiner rahmen um den ersten button
tft.drawRect(FRAME1_X, FRAME1_Y, FRAME1_W, FRAME1_H, WHITE);
// Button 1 den hintergrund ausfüllen
tft.fillRect(BUTTON1_X, BUTTON1_Y, BUTTON1_W, BUTTON1_H, DARKGREY); //von links, von oben, breite, höhe
// Cursor zum schreiben setzen
tft.setCursor(30, 30);
// Setzt die textfarbe
tft.setTextColor(WHITE);
// Text schreiben
tft.println("Button 1");
// Runden weissen kreis zeichnen
tft.fillCircle(275, 40, 16, WHITE); //von links, von oben, durchmesser
// Runden schwarzen kreis zeichnen
tft.fillCircle(275, 40, 15, BLACK); //von links, von oben, durchmesser
// Zeichnet den zweiten button
// Feiner rahmen um den zweiten button
tft.drawRect(FRAME2_X, FRAME2_Y, FRAME2_W, FRAME2_H, WHITE);
// Button 2 den hintergrund ausfüllen
tft.fillRect(BUTTON2_X, BUTTON2_Y, BUTTON2_W, BUTTON2_H, DARKGREY); //von links, von oben, breite, höhe
// Cursor zum schreiben setzen
tft.setCursor(30, 80); //von links, von oben
// Setzt die textfarbe
tft.setTextColor(WHITE);
// Text schreiben
tft.println("Button 2");
// Runden weissen kreis zeichnen
tft.fillCircle(275, 90, 16, WHITE); //von links, von oben, durchmesser
// Runden schwarzen kreis zeichnen
tft.fillCircle(275, 90, 15, BLACK); //von links, von oben, durchmesser
// Zeichnet den dritten button
// Feiner rahmen um den dritten button
tft.drawRect(FRAME3_X, FRAME3_Y, FRAME3_W, FRAME3_H, WHITE);
// Button 3 den hintergrund ausfüllen
tft.fillRect(BUTTON3_X, BUTTON3_Y, BUTTON3_W, BUTTON3_H, DARKGREY); //von links, von oben, breite, höhe
// Cursor zum schreiben setzen
tft.setCursor(30, 130); //von links, von oben
// Setzt die textfarbe
tft.setTextColor(WHITE);
// Text schreiben
tft.println("Button 3");
// Runden weissen kreis zeichnen
tft.fillCircle(275, 140, 16, WHITE); //von links, von oben, durchmesser
// Runden schwarzen kreis zeichnen
tft.fillCircle(275, 140, 15, BLACK); //von links, von oben, durchmesser
// Zeichnet die Textzeile
tft.drawRect(TEXTZEILE_X, TEXTZEILE_Y, TEXTZEILE_W, TEXTZEILE_H, WHITE);
#define MINPRESSURE 10
}
void loop() {
// Abfrage ob touch vorliegt
TSPoint p = ts.getPoint();
if (p.z > MINPRESSURE)
{
// Start Button entprellen
unsigned long currentMillis = millis();
unsigned long previousMillis = millis();
while ((currentMillis - previousMillis) < INTERVAL) // schleife solange time kleiner als INTERVAL ist
{
currentMillis = millis(); // Update currentMillis mit aktueller zeit
}
// Ende Button entprellen
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
if (p.z > MINPRESSURE) {
//p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
//p.y = (tft.height() - map(p.y, TS_MINY, TS_MAXY, tft.height(), 0));
p.x = map(p.x, TS_MINX, TS_MAXX, 0, tft.width());
p.y = map(p.y, TS_MINY, TS_MAXY, 0, tft.height());
int x = p.y;
int y = p.x;
if ((x > BUTTON1_X) && (x < (BUTTON1_X + BUTTON1_W))) {
if ((y > BUTTON1_Y) && (y < (BUTTON1_Y + BUTTON1_H))) {
tft.drawRect(FRAME1_X, FRAME1_Y, FRAME1_W, FRAME1_H, RED);
tft.fillCircle(275, 40, 15, GREEN);
delay(80);
// Cursor zum schreiben setzen
tft.setCursor(30, 180); //von links, von oben
// Setzt die textfarbe
tft.setTextColor(WHITE, BLACK);
// Text schreiben
tft.println("Erster Button ");
tft.drawRect(FRAME1_X, FRAME1_Y, FRAME1_W, FRAME1_H, WHITE);
tft.fillCircle(275, 40, 15, BLACK);
}
}
if ((x > BUTTON2_X) && (x < (BUTTON2_X + BUTTON2_W))) {
if ((y > BUTTON2_Y) && (y < (BUTTON2_Y + BUTTON2_H))) {
tft.drawRect(FRAME2_X, FRAME2_Y, FRAME2_W, FRAME2_H, RED);
tft.fillCircle(275, 90, 15, GREEN);
delay(80);
// Cursor zum schreiben setzen
tft.setCursor(30, 180); //von links, von oben
// Setzt die textfarbe
tft.setTextColor(WHITE, BLACK);
// Text schreiben
tft.println("Zweiter Button");
tft.drawRect(FRAME2_X, FRAME2_Y, FRAME2_W, FRAME2_H, WHITE);
tft.fillCircle(275, 90, 15, BLACK);
}
}
if ((x > BUTTON3_X) && (x < (BUTTON3_X + BUTTON3_W))) {
if ((y > BUTTON3_Y) && (y < (BUTTON3_Y + BUTTON3_H))) {
tft.drawRect(FRAME3_X, FRAME3_Y, FRAME3_W, FRAME3_H, RED);
tft.fillCircle(275, 140, 15, GREEN);
delay(80);
// Cursor zum schreiben setzen
tft.setCursor(30, 180); //von links, von oben
// Setzt die textfarbe
tft.setTextColor(WHITE, BLACK);
// Text schreiben
tft.println("Dritter Button");
tft.drawRect(FRAME3_X, FRAME3_Y, FRAME3_W, FRAME3_H, WHITE);
tft.fillCircle(275, 140, 15, BLACK);
}
}
}
}
}