Uhr mit TFT 240x240 Pixeln



Ziele des Projekts

  • mit der WiFi-Funk­tion eines ESP32 oder ESP8266 Mikro­con­trollers die aktuelle Zeit und das aktuelle Datum holen
  • analoge Uhr auf einem run­den TFT anzeigen

Das Pro­gramm für ein TFT mit 320x240 Pix­eln find­est du ⇒hier, das für ein TFT mit 480x320 Pix­eln gibt es ⇒hier.

Das Programm im Film

Anwendungsbeispiele

Konfiguration der Mikrocontroller

TFT mit 240x240 Pixeln

Beispiel­pro­gramm

Schaltplan für ESP32-Wroom

RST (gelb) -> 4
CS (weiß) -> 5
DC ( grün) -> 2
SDA (blau) -> 23
SCL (braun) -> 18

Benötigte Bibliothek

Bibliothek Adafruit GFX Library

Die Bib­lio­thek Adafruit_GC9A01A ver­wen­det die Funk­tio­nen der Adafruit GFX Library.

Funktionen der Bibliothek Adafruit_GFX_Library

Schlüs­sel­wortPara­me­terAktion
width();Bild­schirm­bre­ite fest­stellen
height();Bild­schirmhöhe fest­stellen
setRotation(Richtung);Rich­tung = 0 → nicht drehen
Rich­tung = 1 → 90° drehen
Rich­tung = 2 → 180° drehen
Rich­tung = 3 → 270 ° drehen
Bild­schirm aus­richt­en
fillScreen(Farbe);Bild­schirmhin­ter­grund
drawLine(StartX, Star­tY, EndeX, EndeY, Farbe);Lin­ie zeich­nen
drawFastHLine(StartX, Star­tY, Länge, Farbe);hor­i­zon­tale Lin­ie zeich­nen
drawFastVLine(StartX, Star­tY, Länge, Farbe);ver­tikale Lin­ie zeich­nen
drawRect(StartX, Star­tY„ Bre­ite, Höhe, Farbe);Rechteck zeich­nen
drawRoundRect(StartX, Star­tY, Bre­ite, Höhe, Eck­en­ra­dius, Farbe);abgerun­detes Rechteck zeich­nen
fillRoundRect(StartX, Star­tY, Bre­ite, Höhe, Eck­en­ra­dius, Füll­farbe);aus­ge­fülltes abgerun­detes Rechteck zeich­nen
fillRect(StartX, Star­tY, Bre­ite, Höhe, Füll­farbe);aus­ge­fülltes Rechteck zeich­nen
drawCircle(MittelpunktX, Mit­telpunk­tY, Radius, Farbe);Kreis zeich­nen
fillCircle(MittelpunktX, Mit­telpunk­tY, Radius, Füll­farbe);Aus­ge­füll­ten Kreis zeich­nen
drawTriangle(x1, y1, x2, y2, x3, y3, Farbe);Dreieck zeich­nen:
x1, y1: 1.Punkt
x2, y2: 2.Punkt
x3, y3: 3.Punkt
fillTriangle(x1, y1, x2, y2, x3, y3, Füll­farbe);aus­ge­fülltes Dreieck zeich­nen:
x1, y1: 1.Punkt
x2, y2: 2.Punkt
x3, y3: 3.Punkt
setCursor(x, y);Cur­sor set­zen
setTextSize(Textgröße);TextgrößeTextgröße bes­tim­men
setTextColor(Farbe);Text­farbe set­zen
print(“Text”); println(“Text”);Text schreiben
setTextWrap(true/false);false → Text fließt über den Rand des TFTs hin­aus
true → Text wird am Ende umge­brochen
Zeilenum­bruch
invert­Dis­play();0 → Far­ben nicht tauschen
1 → Far­ben tauschen
color565(rot, grün, blau);rot: 0 — 255
grün: 0 — 255
blau: 0 — 255
beliebige Mis­ch­far­ben erstellen
drawBitmap(PosX, PosY, Array, Array­GrößeX, Array­GrößeY, Farbe);Array als Bild darstellen

Das Programm

Das Pro­gramm kann auf vielfältige Weise angepasst wer­den:

  • die Farbe der Zeiger (Zeiger­farbe)
    die Far­ben kannst du dem Kopf des Pro­gramms ent­nehmen
  • die Farbe des inneren Kreis­es (Kre­is­farbe)
  • die Farbe der äußeren Umran­dung (Rand­farbe)
  • Anzeige des Datums (Datu­mAnzeigen)
    true: Datum anzeigen, false: Datum ver­ber­gen
  • Sekun­den­zeiger voll­ständig oder nur als Kreis anzeigen (Sekun­den­zeigerKreis)
    true: nur den Kreis anzeigen, false: Sekun­den­zeiger als Lin­ie mit Kreis am Ende der Lin­ie anzeigen
    Wird true gewählt, ent­fällt die Aktu­al­isierung des Datums für 20 Sekun­den, wenn der Sekun­den­zeiger sich darüber befind­et.
    Das reduziert das kurze Flack­ern der Anzeige des Datums.
  • die Anzeige der Stun­den­markierun­gen 12, 3, 6 und 9 (Zif­fer­nanzeigen)
    true: Zif­fern anzeigen, false: Zif­fern ver­ber­gen

Beim Start des Pro­gramms zei­gen die Mel­dun­gen ob Datum und Zeit kor­rekt sind. Wenn in 90 Sekun­den keine Verbindung zu einem Zeit­serv­er hergestellt wer­den kon­nte, wird das Pro­gramm been­det. Nach einem erneuten Hochladen kommt zumeist die Verbindung schnell zus­tande.

Du musst die SPI-Pins des ver­wen­de­ten Mikro­con­trollers anpassen.


Quellen


Letzte Aktualisierung: Nov. 14, 2025 @ 9:40