Guten Tag Liebe Community.
Ich habe ein Problem mit meinem ILI9341. Ich möchte mit wischen von links nach rechts Seiten wechseln. Nun hab ich das Problem, das er erkennt, wenn ich die Seite wechsel möchte dank meiner eingebauten debug logik. Aber immer wenn ich die Seiten wechsel wird mein Display weiß. Ich weiß es ich nur eine Kleinigkeit, die ich übersehe. Vielleicht kann ja mal jemand über meine code darüber schauen und mir sagen, wo der Fehler liegen könnte.
`#include <MCUFRIEND_kbv.h>
#include <TouchScreen.h>
// Display- und Touchscreen-Objekte
MCUFRIEND_kbv tft;
#define MINPRESSURE 10
#define MAXPRESSURE 1000
#define YP A3
#define XM A2
#define YM 9
#define XP 8
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
// Kalibrierungswerte
const int TS_LEFT = 906, TS_RT = 126, TS_TOP = 78, TS_BOT = 904;
// Seiten-Management
int currentPage = 0;
void setup() {
Serial.begin(9600);
uint16_t ID = tft.readID();
Serial.print("Display ID: 0x");
Serial.println(ID, HEX);
if (ID == 0xD3D3 || ID == 0xFFFF || ID == 0x0000) {
Serial.println("Fallback auf ID 0x9341.");
ID = 0x9341;
}
tft.begin(ID);
tft.setRotation(1);
showPage(0); // Starte mit Seite 0
}
void loop() {
TSPoint p = ts.getPoint();
if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
// Berechne Touch-Koordinaten
int x = map(p.x, TS_LEFT, TS_RT, 0, tft.width());
int y = map(p.y, TS_TOP, TS_BOT, 0, tft.height());
Serial.print("Touch X: ");
Serial.print(x);
Serial.print(", Touch Y: ");
Serial.println(y);
// Wisch-Erkennung
if (x > tft.width() - 50) { // Wisch nach rechts
Serial.println("Wisch nach rechts erkannt.");
nextPage();
} else if (x < 50) { // Wisch nach links
Serial.println("Wisch nach links erkannt.");
previousPage();
}
delay(300); // Debounce
}
}
void nextPage() {
currentPage = (currentPage + 1) % 3; // Zirkuläre Logik für Seitenwechsel
Serial.print("Wechsle zu Seite: ");
Serial.println(currentPage);
showPage(currentPage);
}
void previousPage() {
currentPage = (currentPage - 1 + 3) % 3;
Serial.print("Wechsle zu Seite: ");
Serial.println(currentPage);
showPage(currentPage);
}
void showPage(int page) {
uint16_t ID = tft.readID(); // Display-ID erneut lesen
tft.begin(ID); // Display neu initialisieren
tft.setRotation(1); // Rotation setzen
tft.fillScreen(0x0000); // Bildschirm löschen
Serial.print("Zeige Seite: ");
Serial.println(page);
switch (page) {
case 0:
tft.setTextColor(0xFFFF); // Weiß
tft.setTextSize(2);
tft.setCursor(50, 100);
tft.print("Seite 1: Hallo Lukas");
tft.drawRect(10, 10, 100, 50, 0xFFFF); // Test: Weißer Rahmen
break;
case 1:
tft.setTextColor(0x07E0); // Grün
tft.setTextSize(3);
tft.setCursor(50, 100);
tft.print("Seite 2: Willkommen!");
tft.fillCircle(120, 160, 30, 0x07E0); // Test: Grüner Kreis
break;
case 2:
tft.setTextColor(0xF800); // Rot
tft.setTextSize(3);
tft.setCursor(50, 100);
tft.print("Seite 3: Viel Spaß!");
tft.drawLine(0, 0, tft.width(), tft.height(), 0xF800); // Test: Rote Linie
break;
default:
tft.setTextColor(0xFFFF); // Weiß
tft.setTextSize(2);
tft.setCursor(50, 100);
tft.print("Fehler: Unbekannte Seite!");
break;
}
Serial.println("Fertig mit Zeichnen.");
}
` Vielen Dank schonmal.