Zeit auf TFT anzeigen

TFT 128×160 Pixel

Du musst die WiFi-Biblio­thek, SPI-Pins des ver­wen­de­ten Mikro­con­trol­lers und die WiFi-Daten anpassen.

// ESP32
#include "WiFi.h"

// ESP8266
// #include "ESP8266WiFi.h"

#include "time.h"
#include "Adafruit_ST7735.h"
#include "U8g2_for_Adafruit_GFX.h"

// Wemos D1 Mini
// #define TFT_CS       D8
// #define TFT_RST      D1
// #define TFT_DC       D2

// XIAO
// #define TFT_CS       D7
// #define TFT_RST      D1
// #define TFT_DC       D2

// Arduino Nano ESP 32
// #define TFT_CS       10
// #define TFT_RST       9
// #define TFT_DC        8


// SPI-Pins ESP32-C6
// #define TFT_CS       18
// #define TFT_RST       3                                          
// #define TFT_DC        2

// ESP32-WROOM
// #define TFT_CS        5
// #define TFT_RST       4
// #define TFT_DC        2

Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS, TFT_DC, TFT_RST);

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";

// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"

/*
  Liste der Zeitzonen
  https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
  CEST = Central European Summer Time von
  M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
  bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"

// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;

/* 
  Struktur tm
  tm_hour -> Stunde: 0 bis 23
  tm_min -> Minuten: 0 bis 59
  tm_sec -> Sekunden 0 bis 59
  tm_mday -> Tag 1 bis 31
  tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
  tm_year -> Jahre seit 1900
  tm_yday -> vergangene Tage seit 1. Januar des Jahres
  tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;

unsigned long Intervall = 5000;

void setup()
{
  // Schriften von u8g2 tft zuordnen
  u8g2Schriften.begin(tft);
  
  // Zeitzone: Parameter für die zu ermittelnde Zeit
  configTzTime(Zeitzone, Zeitserver);

  Serial.begin(9600);

  // WiFi starten und Verbindung aufbauen
  WiFi.begin(Router, Passwort);
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(200);
    Serial.print(".");
  }

  // SSID des Routers anzeigen
  Serial.println();
  Serial.print("Verbunden mit ");
  Serial.println(WiFi.SSID());

  // IP anzeigen
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());

   // TFT starten schwarzer Hintergrund
  tft.initR(INITR_BLACKTAB);

  // Rotation anpassen Querformat
  tft.setRotation(1);
  tft.fillScreen(ST77XX_BLACK);
  u8g2Schriften.setForegroundColor(ST7735_WHITE);   
  u8g2Schriften.setBackgroundColor(ST7735_BLACK);
  u8g2Schriften.setFont(u8g2_font_fub42_tf);   
}

void loop() 
{
  // Bereich der Zeitanzeige mit schwarzem Rechteck füllmn
  tft.fillRect(2, 20, tft.width(), 80, ST77XX_BLACK);

  // Cursor setzen
  u8g2Schriften.setCursor(2, 80);

  // aktuelle Zeit holen
  time(&aktuelleZeit);

  // localtime_r -> Zeit in die lokale Zeitzone setzen
  localtime_r(&aktuelleZeit, &Zeit);

  // Stunde: wenn Stunde < 10 -> 0 davor setzen
  if (Zeit.tm_hour < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.print(Zeit.tm_hour);
  u8g2Schriften.print(Zeit.tm_hour);
  Serial.print(":");
  u8g2Schriften.print(":");

  // Minuten
  // wenn Minute < 10 -> 0 davor setzen
  if (Zeit.tm_min < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.println(Zeit.tm_min);
  u8g2Schriften.print(Zeit.tm_min);

  delay(Intervall);
}

Ide­aS­park ESP32 mit TFT 170×320 Pixel

#include "WiFi.h"
#include "time.h"
#include "Adafruit_ST7789.h"
#include "U8g2_for_Adafruit_GFX.h"

#define TFT_CS        15
#define TFT_RST        4
#define TFT_DC         2

Adafruit_ST7789 tft = Adafruit_ST7789(TFT_CS, TFT_DC, TFT_RST);

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxxx";

// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"

/*
  Liste der Zeitzonen
  https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
  CEST = Central European Summer Time von
  M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
  bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"

// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;

/* 
  Struktur tm
  tm_hour -> Stunde: 0 bis 23
  tm_min -> Minuten: 0 bis 59
  tm_sec -> Sekunden 0 bis 59
  tm_mday -> Tag 1 bis 31
  tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
  tm_year -> Jahre seit 1900
  tm_yday -> vergangene Tage seit 1. Januar des Jahres
  tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;

unsigned long Intervall = 5000;

void setup()
{
  // Schriften von u8g2 tft zuordnen
  u8g2Schriften.begin(tft);
  
  // Zeitzone: Parameter für die zu ermittelnde Zeit
  configTzTime(Zeitzone, Zeitserver);

  Serial.begin(9600);

  // WiFi starten und Verbindung aufbauen
  WiFi.begin(Router, Passwort);
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(200);
    Serial.print(".");
  }

  // SSID des Routers anzeigen
  Serial.println();
  Serial.print("Verbunden mit ");
  Serial.println(WiFi.SSID());

  // IP anzeigen
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());

   // TFT starten
  tft.init(170, 320);

  // Rotation anpassen Querformat
  tft.setRotation(1);
  tft.fillScreen(ST77XX_BLACK);
  u8g2Schriften.setForegroundColor(ST77XX_WHITE);   
  u8g2Schriften.setBackgroundColor(ST77XX_BLACK);
  u8g2Schriften.setFont(u8g2_font_logisoso92_tn);  
}

void loop() 
{
  // Bereich der Zeitanzeige mit schwarzem Rechteck füllmn
  tft.fillRect(20, 20, tft.width(), 130, ST77XX_BLACK);

  // Cursor setzen
  u8g2Schriften.setCursor(20, 130);

  // aktuelle Zeit holen
  time(&aktuelleZeit);

  // localtime_r -> Zeit in die lokale Zeitzone setzen
  localtime_r(&aktuelleZeit, &Zeit);

  // Stunde: wenn Stunde < 10 -> 0 davor setzen
  if (Zeit.tm_hour < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.print(Zeit.tm_hour);
  u8g2Schriften.print(Zeit.tm_hour);
  Serial.print(":");
  u8g2Schriften.print(":");

  // Minuten
  // wenn Minute < 10 -> 0 davor setzen
  if (Zeit.tm_min < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.println(Zeit.tm_min);
  u8g2Schriften.print(Zeit.tm_min);
  delay(Intervall);
}

TFT 240×320 Pixel mit Anzei­ge Datum

Du musst die WiFi-Biblio­­thek, SPI-Pins des ver­wen­de­ten Mikro­con­trol­lers und die WiFi-Daten anpassen.

// ESP32
// #include "WiFi.h"

// ESP8266
// #include "ESP8266WiFi.h"

#include "time.h"
#include "Adafruit_ILI9341.h"
#include "U8g2_for_Adafruit_GFX.h"

// Wemos D1 Mini
// #define TFT_CS       D8
// #define TFT_RST      D1
// #define TFT_DC       D2

// XIAO
// #define TFT_CS       D7
// #define TFT_RST      D1
// #define TFT_DC       D2

// Arduino Nano ESP 32
// #define TFT_CS       10
// #define TFT_RST       9
// #define TFT_DC        8


// SPI-Pins ESP32-C6
// #define TFT_CS       18
// #define TFT_RST       3                                          
// #define TFT_DC        2

// ESP32-WROOM
// #define TFT_CS        5
// #define TFT_RST       4
// #define TFT_DC        2

Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);

// Objekt u8g2Schriften
U8G2_FOR_ADAFRUIT_GFX u8g2Schriften;

char Router[] = "Router_SSID";
char Passwort[] = "xxxxxxx";

// NTP-Server aus dem Pool
#define Zeitserver "de.pool.ntp.org"

/*
  Liste der Zeitzonen
  https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv
  Zeitzone CET = Central European Time -1 -> 1 Stunde zurück
  CEST = Central European Summer Time von
  M3 = März, 5.0 = Sonntag 5. Woche, 02 = 2 Uhr
  bis M10 = Oktober, 5.0 = Sonntag 5. Woche 03 = 3 Uhr
*/
#define Zeitzone "CET-1CEST,M3.5.0/02,M10.5.0/03"

// time_t enthält die Anzahl der Sekunden seit dem 1.1.1970 0 Uhr
time_t aktuelleZeit;

/* 
  Struktur tm
  tm_hour -> Stunde: 0 bis 23
  tm_min -> Minuten: 0 bis 59
  tm_sec -> Sekunden 0 bis 59
  tm_mday -> Tag 1 bis 31
  tm_mon -> Monat: 0 (Januar) bis 11 (Dezember)
  tm_year -> Jahre seit 1900
  tm_yday -> vergangene Tage seit 1. Januar des Jahres
  tm_isdst -> Wert > 0 = Sommerzeit (dst = daylight saving time)
*/
tm Zeit;

// Intervall anpassen
unsigned long Intervall = 5000;

void setup()
{
  // Schriften von u8g2 tft zuordnen
  u8g2Schriften.begin(tft);
  
  // Zeitzone: Parameter für die zu ermittelnde Zeit
  configTzTime(Zeitzone, Zeitserver);

  Serial.begin(9600);

  // WiFi starten und Verbindung aufbauen
  WiFi.begin(Router, Passwort);
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(200);
    Serial.print(".");
  }

  // SSID des Routers anzeigen
  Serial.println();
  Serial.print("Verbunden mit ");
  Serial.println(WiFi.SSID());

  // IP anzeigen
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());

   // TFT starten
  tft.begin();

  // Rotation anpassen Querformat
  tft.setRotation(1);
  tft.fillScreen(ILI9341_BLACK);
  u8g2Schriften.setForegroundColor(ILI9341_WHITE);   
  u8g2Schriften.setBackgroundColor(ILI9341_BLACK);
}

void loop() 
{
  // aktuelle Zeit holen
  time(&aktuelleZeit);

  // localtime_r -> Zeit in die lokale Zeitzone setzen
  localtime_r(&aktuelleZeit, &Zeit);
  tft.fillScreen(ILI9341_BLACK);

  u8g2Schriften.setFont(u8g2_font_fub35_tf);  

  // Cursor setzen
  u8g2Schriften.setCursor(20, 50);

 // Tag: führende 0 ergänzen
  if (Zeit.tm_mday < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.print(Zeit.tm_mday);
  Serial.print(".");
  u8g2Schriften.print(Zeit.tm_mday);
  u8g2Schriften.print(".");

  // Monat: führende 0 ergänzen
  if (Zeit.tm_mon < 9) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.print(Zeit.tm_mon + 1);
  Serial.print(".");
  u8g2Schriften.print(Zeit.tm_mon + 1);
  u8g2Schriften.print(".");

  // Anzahl Jahre seit 1900
  Serial.print(Zeit.tm_year + 1900);
  Serial.print(" ");
  u8g2Schriften.print(Zeit.tm_year + 1900);

  tft.drawFastHLine(1, 65, tft.width(), ILI9341_WHITE);
  tft.drawFastHLine(1, 66, tft.width(), ILI9341_WHITE);

  u8g2Schriften.setFont(u8g2_font_logisoso92_tn);  

  // Cursor setzen
  u8g2Schriften.setCursor(2, 200);

  // Stunde: wenn Stunde < 10 -> 0 davor setzen
  if (Zeit.tm_hour < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.print(Zeit.tm_hour);
  u8g2Schriften.print(Zeit.tm_hour);
  Serial.print(":");
  u8g2Schriften.print(":");

  // Minuten
  // wenn Minute < 10 -> 0 davor setzen
  if (Zeit.tm_min < 10) 
  {
    Serial.print("0");
    u8g2Schriften.print("0");
  }
  Serial.println(Zeit.tm_min);
  u8g2Schriften.print(Zeit.tm_min);
  delay(Intervall);
}