TFT Touch Display

Hallo zusammen :grinning: ,
auf dem Gebiet von Arduino bin ich noch relativ neu.
In meinem neustem Projekt möchte ich eine Art Wetterstation mit einem TFT-Touch-Bildschirm von Elegoo und diversen Sensoren realisieren. Ich nutze für dieses Projekt einen Arduino Mega. Bis jetzt ist es mir schon gelungen das Datum, die Zeit, Temperatur und Feuchtigkeit auf dem Bildschirm ohne Flackern anzeigen zu lassen. Somit möchte ich nun noch eine Weckfunktion über einen Button auf dem Bildschirm implementieren, der mich zu einer neuen Seite bringen soll, auf der man den Alarm einstellen kann.
So weit so gut, wenn ich aber zum Test den unten stehenden Sketch hochlade, wird mir für etwa eine Sekunde auf dem Bildschirm das Interface mit Uhrzeit, Temperatur und so weiter angezeigt und der Bildschirm wird weiß, danach passiert nichts mehr. Ich habe schon gefühlt überall im Internet nach einer Problemlösung gesucht, bisher jedoch ohne Erfolg. Daher würde ich mich sehr über Eure spezifischen Beiträge zu meinem Problem freuen. :smiley:

Danke im Voraus. :wink:

#include <dht.h>
//#include "DHT.h"

#include <DS3231.h>
//#include <Wire.h>
#include <Adafruit_TFTLCD.h> 
//#include <Adafruit_GFX.h>    
#include <TouchScreen.h>

#define LCD_CS A3 
#define LCD_CD A2 
#define LCD_WR A1 
#define LCD_RD A0 
#define LCD_RESET A4 

#define TS_MINX 122
#define TS_MINY 111
#define TS_MAXX 942
#define TS_MAXY 890

#define YP A3
#define XM A2
#define YM 9
#define XP 8

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

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

boolean buttonEnabled = true;
//Uhrzeit
DS3231 clock;
RTCDateTime dt;


//Temperatur und Feuchtigkeit
int dht_apin = 23;
dht DHT;

int previousTemperature = 0;
int previousHumidity = 0;

char currentPage;
void setup() {
Serial.begin(9600);

//Uhrzeit
Serial.println("Initialisiere DS3231");;
clock.begin(); 

   // clock.setDateTime(__DATE__, __TIME__);
  
  tft.reset();
  uint16_t identifier = tft.readID();
  tft.begin(identifier);

  tft.setRotation(0);
  tft.fillScreen(BLACK);
  tft.drawRect(0,0,240,320,BLUE);


pinMode(dht_apin, INPUT);
  
//Feuchtigkeit
tft.setCursor(10, 170);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.print("Feuchtigkeit:");

tft.setCursor(150, 200);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("%");

//Temperatur
tft.setCursor(10, 100);
tft.setTextColor(WHITE);
tft.setTextSize(2);
tft.print("Temperatur:");

tft.setCursor(150, 130);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("C");

//Alarm
tft.fillRect(10, 250, 100, 40, RED);
tft.drawRect(10, 250, 100, 40, WHITE);
tft.setCursor(15, 258);
tft.setTextColor(WHITE);
tft.setTextSize(3);
tft.print("Alarm");
}

void loop() {
clockAndDHT11();
touch();
  
}
void touch() {
   //Touchscreen 
 TSPoint p = ts.getPoint();
  
  if (p.z > ts.pressureThreshhold) {
    
   p.x = map(p.x, TS_MAXX, TS_MINX, 0,480);
   p.y = map(p.y, TS_MAXY, TS_MINY, 0, 320);

       
   if(p.x>250&& p.x<290&& p.y>10 && p.y<110 && buttonEnabled){
    
    buttonEnabled = false;
    
    pinMode(XM, OUTPUT);
    pinMode(YP, OUTPUT);

    tft.fillScreen(RED); //Nur zum Test
   }  
  }
}

void clockAndDHT11() {

currentPage = '1';
//TEMPERATUR UND FEUCHTIGKEIT
DHT.read11(dht_apin);

//Temperatur
int currentTemperature = DHT.temperature;

//Feuchtigkeit
int currentHumidity = DHT.humidity;
  
//UHRZEIT
dt = clock.getDateTime(); 

//ZEIT
long currentSeconds = clock.dateFormat("s", dt);
long currentMinutes = clock.dateFormat("i", dt);
long currentHours = clock.dateFormat("H", dt);

int previousSeconds = 0;
int previousMinutes = 0;
int previousHours = 0;

//DATUM
long currentDay = clock.dateFormat("d", dt);
long currentMonth = clock.dateFormat("m", dt);
long currentYear = clock.dateFormat("Y", dt);

int previousDay = 0;
int previousMonth = 0;
int previousYear = 0;

const long currentMillis = millis();
long previousMillis = 0;

//Sekunden
if(currentSeconds - previousSeconds != 0) {
   
      tft.setCursor(180, 50);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("s",dt));

      previousSeconds = currentSeconds;
}

//Minuten
if(currentMinutes - previousMinutes != 0) {
  
      tft.setCursor(100, 50);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("i :",dt));

      previousMinutes = currentMinutes;
}

//Stunden
if(currentHours - previousHours != 0) {
  
      tft.setCursor(20, 50);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("H :",dt));

      previousHours = currentHours;
}

//Tag
if(currentDay - previousDay != 0) {
  
      tft.setCursor(3, 10);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("d -",dt));

      previousDay = currentDay;
}

//Monat
if(currentMonth - previousMonth != 0) {
  
      tft.setCursor(83, 10);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("m -",dt));

      previousMonth = currentMonth;
}

//Jahr
if(currentYear - previousYear != 0) {
  
      tft.setCursor(163, 10);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("Y",dt));

      previousYear = currentYear;
}

//Temperatur
if(currentTemperature - previousTemperature != 0) {
  
      tft.setCursor(20, 130);
      tft.setTextColor(WHITE,BLACK);
      tft.setTextSize(3);
      tft.print(DHT.temperature);

      previousTemperature = currentTemperature;
}

//Feuchtigkeit
if(currentHumidity - previousHumidity != 0) {
  
      tft.setCursor(20, 200);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(DHT.humidity);

      previousHumidity = currentHumidity;
}

  Serial.print("Long Number Format:          ");
  Serial.println(clock.dateFormat("H:i:s",dt));
  Serial.println(); 
  Serial.print("Temperatur: "); 
  Serial.println(DHT.temperature);
  Serial.print("Feuchtigkeit: ");
  Serial.println(DHT.humidity);
  Serial.println();
  
}

TFT_LCD_Touchscreen.ino (6.15 KB)

DS3231.zip (25.2 KB)

Adafruit_TFTLCD.zip (16.4 KB)

TouchScreen.zip (4.57 KB)

Poste bitte deinen Sketch hier direkt im Forum und setze den in Code-Tags.
Verwende dazu die Schaltfläche </> oben links im Forumeditor.
Damit wird der Sketch lesbar auch für mobile Geräte und du bekommst mehr Helfer.

HotSystems:
Poste bitte deinen Sketch hier direkt im Forum und setze den in Code-Tags.
Verwende dazu die Schaltfläche </> oben links im Forumeditor.
Damit wird der Sketch lesbar auch für mobile Geräte und du bekommst mehr Helfer.

Danke für den Tipp :slight_smile: , ist nun erledigt.

Ich muss ehrlich gestehen, ich steige durch deinen Sketch nicht durch.
Es fehlen jegliche Kommentare, daher ist der für Aussenstehende schwer zu lesen.

Ich vermute, das Problem liegt in der Loop, da solltest du mal in kleinen Schritten anfangen.

HotSystems:
Ich muss ehrlich gestehen, ich steige durch deinen Sketch nicht durch.
Es fehlen jegliche Kommentare, daher ist der für Aussenstehende schwer zu lesen.

Ich vermute, das Problem liegt in der Loop, da solltest du mal in kleinen Schritten anfangen.

Ja, tut mir Leid, ich habe im unten stehenden Sketch ein paar Kommentare ergänzt, die den gesamten Sketch erklären sollten. Angefangen habe ich mit diesem Tutorial:

Es liegt halt irgendwie an " TSPoint p = ts.getPoint();".
Wenn ich das entferne läuft alles einwandfrei, nur halt ohne Touchfunktion.

Ich bin langsam echt am verzweifeln. :frowning:

Ich verstehe auch nicht, warum hier in diesem vereinfachtem Beispiel mit Touch die Sekunden nicht aktualisiert werden. Eine Lösung dafür wäre auch schon sehr hilfreich. :slight_smile:

#include <dht.h>
#include <DHT.h>

#include <DS3231.h>
#include <Wire.h>
#include <Adafruit_TFTLCD.h> 
#include <Adafruit_GFX.h>    
#include <TouchScreen.h>

#define LCD_CS A3 
#define LCD_CD A2 
#define LCD_WR A1 
#define LCD_RD A0 
#define LCD_RESET A4 

#define TS_MINX 122
#define TS_MINY 111
#define TS_MAXX 942
#define TS_MAXY 890

#define YP A3
#define XM A2
#define YM 9
#define XP 8

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

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

boolean buttonEnabled = true;

//Uhrzeit
DS3231 clock;
RTCDateTime dt;


void setup() {

Serial.begin(9600);

clock.begin(); 

 tft.reset();
 uint16_t identifier = tft.readID();
 tft.begin(identifier);

 tft.setRotation(0);
 tft.fillScreen(BLACK);
}

void loop() {
  
//UHRZEIT
dt = clock.getDateTime(); 

//ZEIT
long currentSeconds = clock.dateFormat("s", dt);
int previousSeconds = 0;

//Sekunden
if(currentSeconds - previousSeconds != 0) { //Sekunden der Uhr stimmen nicht mit dem gespeichertem Wert überein
   
      tft.setCursor(180, 50);
      tft.setTextColor(WHITE, BLACK);
      tft.setTextSize(3);
      tft.print(clock.dateFormat("s",dt)); //Neuer Wert wird auf das Display geschrieben

      previousSeconds = currentSeconds; //gespeicherter Wert wird aktualisiert
}                               
   
  TSPoint p = ts.getPoint();
  
  if (p.z > ts.pressureThreshhold) {
    
   p.x = map(p.x, TS_MAXX, TS_MINX, 0,480);
   p.y = map(p.y, TS_MAXY, TS_MINY, 0, 320);

       
   if(p.x>0&& p.x<300&& p.y>0 && p.y<250 && buttonEnabled){
    
    buttonEnabled = false;
    
    pinMode(XM, OUTPUT);
    pinMode(YP, OUTPUT);

    tft.fillScreen(RED); //Nur zum Test
   }  
  }

}
#include <DS3231.h>

Welche Bibliothek verwendest Du?

agmue:

#include <DS3231.h>

Welche Bibliothek verwendest Du?

Ich verstehe nicht so recht, was genau möchtest du wissen, vielleicht wo ich diese Bibliothek her habe?

Es gibt ganz viele verschiede Bibliotheken mit unterschiedlichen Methoden. Ich habe drei Stück, aber alle mag der Compiler nicht im Zusammenhang mit Deinem Sketch:

invalid conversion from 'char*' to 'long int' [-fpermissive]

Daher hätte ich gerne einen Link zu der von Dir verwendeten ZIP-Datei.

agmue:
Es gibt ganz viele verschiede Bibliotheken mit unterschiedlichen Methoden. Ich habe drei Stück, aber alle mag der Compiler nicht im Zusammenhang mit Deinem Sketch:

invalid conversion from 'char*' to 'long int' [-fpermissive]

Daher hätte ich gerne einen Link zu der von Dir verwendeten ZIP-Datei.

Gut, die Bibliothek ist von einer CD von Elegoo. Sie befindet sich jetzt im Anhang oben. :slight_smile:

Ich bekomme diese Fehlermeldungen vom Compiler:

In function 'void clockAndDHT11()':
149: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
150: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
151: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
158: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
159: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
160: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
166:12: warning: unused variable 'currentMillis' [-Wunused-variable]
167:6: warning: unused variable 'previousMillis' [-Wunused-variable]
invalid conversion from 'char*' to 'long int' [-fpermissive]

agmue:
Ich bekomme diese Fehlermeldungen vom Compiler:

In function 'void clockAndDHT11()':

149: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
150: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
151: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
158: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
159: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
160: error: invalid conversion from 'char*' to 'long int' [-fpermissive]
166:12: warning: unused variable 'currentMillis' [-Wunused-variable]
167:6: warning: unused variable 'previousMillis' [-Wunused-variable]
invalid conversion from 'char*' to 'long int' [-fpermissive]

Vielleicht sollte ich die anderen Bibliotheken auch noch hochladen, oder? Ich habe keine Fehlermeldungen.

In DS3231.h sehe ich:

char* dateFormat(const char* dateFormat, RTCDateTime dt);

Das paßt zu meiner Fehlermeldung. Leider habe ich keine Idee, warum die bei Dir nicht kommt :confused:

agmue:
In DS3231.h sehe ich:

char* dateFormat(const char* dateFormat, RTCDateTime dt);

Das paßt zu meiner Fehlermeldung. Leider habe ich keine Idee, warum die bei Dir nicht kommt :confused:

Vielleicht sollte ich es also mit einer anderen Bibliothek versuchen, wird vielleicht ein bisschen kompliziert. :confused:

Update:
Problem gefunden, es war die Adafruit_TFTLCD Bibliothek. Anscheinend harmoniert sie nicht so sehr mit der DS3231 Bibliothek. :angry:
Ich verwende nun die leicht abgewandelte Elegoo_TFTLCD Bibliothek, die speziell für das Display ist.
Trotzdem danke für Eure Unterstützung, ich halte Euch auf dem Laufenden. :slight_smile:

Ich möchte gerne Deine Situation nachstellen, aber wenn ich nicht kompilieren kann, dann geht das leider nicht.

Schaue bitte in Deine DS3231.h, ob dort auch diese Zeile steht:

char* dateFormat(const char* dateFormat, RTCDateTime dt);

agmue:
Ich möchte gerne Deine Situation nachstellen, aber wenn ich nicht kompilieren kann, dann geht das leider nicht.

Schaue bitte in Deine DS3231.h, ob dort auch diese Zeile steht:

char* dateFormat(const char* dateFormat, RTCDateTime dt);

Ja, bei mir steht das gleiche: :frowning:

 char* dateFormat(const char* dateFormat, RTCDateTime dt);
	char* dateFormat(const char* dateFormat, RTCAlarmTime dt);

Das mit dem falschen Datenformat bekomme ich nicht geklärt, daher dies:

long currentSeconds = dt.second;
  long currentMinutes = dt.minute;
  long currentHours = dt.hour;
...
  long currentDay = dt.day;
  long currentMonth = dt.month;
  long currentYear = dt.year;

Bei Dir sehe ich eine andere Nutzung der Anschlüsse, das solltest Du nochmal überprüfen. A2 und A3 könnten vertauscht sein.

So zeigt das Display was an

int dht_apin = 2;

mit 23 wie bei Dir nicht.

Mit diesem Sketch

#include <dht.h>

#include <DS3231.h>
#include <Wire.h>
#include <Adafruit_TFTLCD.h>
#include <Adafruit_GFX.h>
#include <TouchScreen.h>
/*
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
*/
#define LCD_CS 31 // Chip Select
#define LCD_CD A15 // Command/Data
#define LCD_WR A14 // LCD Write
#define LCD_RD 30 // LCD Read
#define LCD_RESET 0 // direkt mit Arduinos Resetpin verbunden 
/*
#define TS_MINX 122
#define TS_MINY 111
#define TS_MAXX 942
#define TS_MAXY 890
*/
#define TS_MINX 130
#define TS_MINY  90
#define TS_MAXX 900
#define TS_MAXY 910
/*
#define YP A3
#define XM A2
#define YM 9
#define XP 8
*/
#define YP A15  // must be an analog pin, use "An" notation!
#define XM A14  // must be an analog pin, use "An" notation!
#define YM 28   // can be a digital pin
#define XP 29   // can be a digital pin 

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

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

boolean buttonEnabled = true;
//Uhrzeit
DS3231 clock;
RTCDateTime dt;


//Temperatur und Feuchtigkeit
int dht_apin = 2;
dht DHT;

int previousTemperature = 0;
int previousHumidity = 0;

char currentPage;
void setup() {
  pinMode(dht_apin, INPUT);
  Serial.begin(9600);

  //Uhrzeit
  Serial.println("Initialisiere DS3231");;
  clock.begin();

  // clock.setDateTime(__DATE__, __TIME__);

  tft.reset();
  uint16_t identifier = 0x9341;
  tft.begin(identifier);
  tft.invert();  // funktioniert nur mit der Bibliotheksanpassung
  tft.setRotation(0);
  tft.fillScreen(BLACK);
  tft.drawRect(0, 0, 240, 320, BLUE);

  //Feuchtigkeit
  tft.setCursor(10, 170);
  tft.setTextColor(WHITE);
  tft.setTextSize(2);
  tft.print("Feuchtigkeit:");

  tft.setCursor(150, 200);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("%");

  //Temperatur
  tft.setCursor(10, 100);
  tft.setTextColor(WHITE);
  tft.setTextSize(2);
  tft.print("Temperatur:");

  tft.setCursor(150, 130);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("C");

  //Alarm
  tft.fillRect(10, 250, 100, 40, RED);
  tft.drawRect(10, 250, 100, 40, WHITE);
  tft.setCursor(15, 258);
  tft.setTextColor(WHITE);
  tft.setTextSize(3);
  tft.print("Alarm");
}

void loop() {
  clockAndDHT11();
  touch();

}
void touch() {
  //Touchscreen
  TSPoint p = ts.getPoint();
  pinMode(XM, OUTPUT);
  pinMode(YP, OUTPUT);

  if (p.z > ts.pressureThreshhold) {

    p.x = map(p.x, TS_MAXX, TS_MINX, 0, 480);
    p.y = map(p.y, TS_MAXY, TS_MINY, 0, 320);
    Serial.print(p.x);
    Serial.print('\t');
    Serial.println(p.y);
    tft.fillScreen(RED); //Nur zum Test
  }
}

void clockAndDHT11() {
  currentPage = '1';
  //TEMPERATUR UND FEUCHTIGKEIT
  //DHT.read11(dht_apin);

  //Temperatur
  int currentTemperature = 25;

  //Feuchtigkeit
  int currentHumidity = 70;

  //UHRZEIT
  dt = clock.getDateTime();

  //ZEIT
  long currentSeconds = dt.second;
  long currentMinutes = dt.minute;
  long currentHours = dt.hour;

  int previousSeconds = 0;
  int previousMinutes = 0;
  int previousHours = 0;

  //DATUM
  long currentDay = dt.day;
  long currentMonth = dt.month;
  long currentYear = dt.year;

  int previousDay = 0;
  int previousMonth = 0;
  int previousYear = 0;

  const long currentMillis = millis();
  long previousMillis = 0;

  //Sekunden
  if (currentSeconds - previousSeconds != 0) {

    tft.setCursor(180, 50);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("s", dt));

    previousSeconds = currentSeconds;
  }

  //Minuten
  if (currentMinutes - previousMinutes != 0) {

    tft.setCursor(100, 50);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("i :", dt));

    previousMinutes = currentMinutes;
  }

  //Stunden
  if (currentHours - previousHours != 0) {

    tft.setCursor(20, 50);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("H :", dt));

    previousHours = currentHours;
  }

  //Tag
  if (currentDay - previousDay != 0) {

    tft.setCursor(3, 10);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("d -", dt));

    previousDay = currentDay;
  }

  //Monat
  if (currentMonth - previousMonth != 0) {

    tft.setCursor(83, 10);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("m -", dt));

    previousMonth = currentMonth;
  }

  //Jahr
  if (currentYear - previousYear != 0) {

    tft.setCursor(163, 10);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(clock.dateFormat("Y", dt));

    previousYear = currentYear;
  }

  //Temperatur
  if (currentTemperature - previousTemperature != 0) {

    tft.setCursor(20, 130);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(currentTemperature);

    previousTemperature = currentTemperature;
  }

  //Feuchtigkeit
  if (currentHumidity - previousHumidity != 0) {

    tft.setCursor(20, 200);
    tft.setTextColor(WHITE, BLACK);
    tft.setTextSize(3);
    tft.print(currentHumidity);

    previousHumidity = currentHumidity;
  }
/*
  Serial.print("Long Number Format:          ");
  Serial.println(clock.dateFormat("H:i:s", dt));
  Serial.println();
  Serial.print("Temperatur: ");
  Serial.println(currentTemperature);
  Serial.print("Feuchtigkeit: ");
  Serial.println(currentHumidity);
  Serial.println();
*/
}

sehe ich dann

TFT_Touch.png

Ich hoffe, meine Bemühungen sind für Dich irgendwie hilfreich :slight_smile:

TFT_Touch.png

agmue:
Das mit dem falschen Datenformat bekomme ich nicht geklärt, daher dies:

long currentSeconds = dt.second;

long currentMinutes = dt.minute;
 long currentHours = dt.hour;
...
 long currentDay = dt.day;
 long currentMonth = dt.month;
 long currentYear = dt.year;



------

Bei Dir sehe ich eine andere Nutzung der Anschlüsse, das solltest Du nochmal überprüfen. A2 und A3 könnten vertauscht sein.

So zeigt das Display was an


int dht_apin = 2;




mit 23 wie bei Dir nicht.

Mit diesem Sketch



#include <dht.h>

#include <DS3231.h>
#include <Wire.h>
#include <Adafruit_TFTLCD.h>
#include <Adafruit_GFX.h>
#include <TouchScreen.h>
/*
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
#define LCD_RESET A4
/
#define LCD_CS 31 // Chip Select
#define LCD_CD A15 // Command/Data
#define LCD_WR A14 // LCD Write
#define LCD_RD 30 // LCD Read
#define LCD_RESET 0 // direkt mit Arduinos Resetpin verbunden
/

#define TS_MINX 122
#define TS_MINY 111
#define TS_MAXX 942
#define TS_MAXY 890
/
#define TS_MINX 130
#define TS_MINY  90
#define TS_MAXX 900
#define TS_MAXY 910
/

#define YP A3
#define XM A2
#define YM 9
#define XP 8
*/
#define YP A15  // must be an analog pin, use "An" notation!
#define XM A14  // must be an analog pin, use "An" notation!
#define YM 28   // can be a digital pin
#define XP 29   // can be a digital pin

#define BLACK   0x0000
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

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

boolean buttonEnabled = true;
//Uhrzeit
DS3231 clock;
RTCDateTime dt;

//Temperatur und Feuchtigkeit
int dht_apin = 2;
dht DHT;

int previousTemperature = 0;
int previousHumidity = 0;

char currentPage;
void setup() {
 pinMode(dht_apin, INPUT);
 Serial.begin(9600);

//Uhrzeit
 Serial.println("Initialisiere DS3231");;
 clock.begin();

// clock.setDateTime(DATE, TIME);

tft.reset();
 uint16_t identifier = 0x9341;
 tft.begin(identifier);
 tft.invert();  // funktioniert nur mit der Bibliotheksanpassung
 tft.setRotation(0);
 tft.fillScreen(BLACK);
 tft.drawRect(0, 0, 240, 320, BLUE);

//Feuchtigkeit
 tft.setCursor(10, 170);
 tft.setTextColor(WHITE);
 tft.setTextSize(2);
 tft.print("Feuchtigkeit:");

tft.setCursor(150, 200);
 tft.setTextColor(WHITE);
 tft.setTextSize(3);
 tft.print("%");

//Temperatur
 tft.setCursor(10, 100);
 tft.setTextColor(WHITE);
 tft.setTextSize(2);
 tft.print("Temperatur:");

tft.setCursor(150, 130);
 tft.setTextColor(WHITE);
 tft.setTextSize(3);
 tft.print("C");

//Alarm
 tft.fillRect(10, 250, 100, 40, RED);
 tft.drawRect(10, 250, 100, 40, WHITE);
 tft.setCursor(15, 258);
 tft.setTextColor(WHITE);
 tft.setTextSize(3);
 tft.print("Alarm");
}

void loop() {
 clockAndDHT11();
 touch();

}
void touch() {
 //Touchscreen
 TSPoint p = ts.getPoint();
 pinMode(XM, OUTPUT);
 pinMode(YP, OUTPUT);

if (p.z > ts.pressureThreshhold) {

p.x = map(p.x, TS_MAXX, TS_MINX, 0, 480);
   p.y = map(p.y, TS_MAXY, TS_MINY, 0, 320);
   Serial.print(p.x);
   Serial.print('\t');
   Serial.println(p.y);
   tft.fillScreen(RED); //Nur zum Test
 }
}

void clockAndDHT11() {
 currentPage = '1';
 //TEMPERATUR UND FEUCHTIGKEIT
 //DHT.read11(dht_apin);

//Temperatur
 int currentTemperature = 25;

//Feuchtigkeit
 int currentHumidity = 70;

//UHRZEIT
 dt = clock.getDateTime();

//ZEIT
 long currentSeconds = dt.second;
 long currentMinutes = dt.minute;
 long currentHours = dt.hour;

int previousSeconds = 0;
 int previousMinutes = 0;
 int previousHours = 0;

//DATUM
 long currentDay = dt.day;
 long currentMonth = dt.month;
 long currentYear = dt.year;

int previousDay = 0;
 int previousMonth = 0;
 int previousYear = 0;

const long currentMillis = millis();
 long previousMillis = 0;

//Sekunden
 if (currentSeconds - previousSeconds != 0) {

tft.setCursor(180, 50);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("s", dt));

previousSeconds = currentSeconds;
 }

//Minuten
 if (currentMinutes - previousMinutes != 0) {

tft.setCursor(100, 50);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("i :", dt));

previousMinutes = currentMinutes;
 }

//Stunden
 if (currentHours - previousHours != 0) {

tft.setCursor(20, 50);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("H :", dt));

previousHours = currentHours;
 }

//Tag
 if (currentDay - previousDay != 0) {

tft.setCursor(3, 10);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("d -", dt));

previousDay = currentDay;
 }

//Monat
 if (currentMonth - previousMonth != 0) {

tft.setCursor(83, 10);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("m -", dt));

previousMonth = currentMonth;
 }

//Jahr
 if (currentYear - previousYear != 0) {

tft.setCursor(163, 10);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(clock.dateFormat("Y", dt));

previousYear = currentYear;
 }

//Temperatur
 if (currentTemperature - previousTemperature != 0) {

tft.setCursor(20, 130);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(currentTemperature);

previousTemperature = currentTemperature;
 }

//Feuchtigkeit
 if (currentHumidity - previousHumidity != 0) {

tft.setCursor(20, 200);
   tft.setTextColor(WHITE, BLACK);
   tft.setTextSize(3);
   tft.print(currentHumidity);

previousHumidity = currentHumidity;
 }
/*
 Serial.print("Long Number Format:          ");
 Serial.println(clock.dateFormat("H:i:s", dt));
 Serial.println();
 Serial.print("Temperatur: ");
 Serial.println(currentTemperature);
 Serial.print("Feuchtigkeit: ");
 Serial.println(currentHumidity);
 Serial.println();
*/
}



sehe ich dann

![TFT_Touch.png|205x264](upload://enGIVG4oG0lmral80NvrmxGPSJs.png)

Ich hoffe, meine Bemühungen sind für Dich irgendwie hilfreich :)

Ja, vielen Dank, ich probiere den Sketch morgen mal aus und melde mich dann zurück. Habe inzwischen aber selbst eine Lösung gefunden mit einer anderen Bibliothek. :slight_smile: Trotzdem nochmal danke, das gibt auf jeden Fall Karma. :slight_smile:

Was ich vergaß zu erwähnen: Bei Touch wird der Schirm rot.

Retruino:
Habe inzwischen aber selbst eine Lösung gefunden mit einer anderen Bibliothek. :slight_smile:

Welche?

Update:
Problem gefunden, es war die Adafruit_TFTLCD Bibliothek. Anscheinend harmoniert sie nicht so sehr mit der DS3231 Bibliothek. :angry:
Ich verwende nun die leicht abgewandelte Elegoo_TFTLCD Bibliothek, die speziell für das Display ist.
Trotzdem danke für Eure Unterstützung, ich halte Euch auf dem Laufenden. :slight_smile:

Hier steht es. :slight_smile:

Ich hoffe, meine Bemühungen sind für Dich irgendwie hilfreich :slight_smile:

Ja, ich habe den Sketch ausprobiert, nur weiß ich nicht, warum mir dauerhaft "Temperatur 25°C und Feuchtigkeit 70%" ausgegeben werden.