Analoge Uhr mit TFT-Shield und BME280

Kate­go­rie: ,

Ziel des Projekts

UNO TFT Shield

Für die Ardui­no-Welt gibt es ver­schie­de­ne TFT-Dis­plays, die als par­al­le­les LCD-Shield aus­ge­führt sind. Es wird auf den Ardui­no UNO gesteckt und nutzt die ent­spre­chen­den Pins.


Ziel des Pro­jekts ist es eine Ver­bin­dung zwi­schen dem 3,5 Zoll TFT-LCD-Shield und einem ESP32-Wroom her­zu­stel­len. Auf dem TFT sol­len eine ana­lo­ge und digi­ta­le Uhr und die Mess­da­ten eines BME280 dar­ge­stellt wer­den.

Konfiguration des Mikrocontrollers

Pinbelegung am ESP32-Wroom

TFT-Shield Pins linksPin ESP32-WroomTFT-Shield Pins rechtsPin ESP32-Wroom
LCD_RST32LCD_D2 26
LCD_CS33LCD_D3 25
LCD_RS15LCD_D4 17 (RX2)
LCD_WR4LCD_D5 16 (TX2)
LCD_RD2LCD_D627
GND GNDLCD_D714
5V5VLCD_D0 23
3V33,3VLCD_D1 13

Bibliothek TFT-eSPI installieren

Biblio­thek TFT_eSPI

Steuerdateien für TFT_eSPI

Die Datei­en befin­den sich im Ord­ner Arduino/libraries/TFT_eSPI.

User_Setup.h

Die Datei User_Setup.h defi­niert den Trei­ber, die Bild­schirm­ma­ße in Pixeln und die ver­wen­de­ten Pins.

User_Setup_Select.h

Das Kom­pi­lie­ren führt zu einer Feh­ler­mel­dung:

Arduino/libraries/TFT_eSPI/Processors/TFT_eSPI_ESP32.c:114:9: error: 'gpio_input_get' was not declared in this scope;

Im Board­ma­na­ger esp32 ab Ver­si­on 3 wur­de die Funk­ti­on gpio_input_get‘ ent­fernt, in der Ver­si­on 2 tritt der Feh­ler nicht auf.

Die Datei Arduino/libraries/TFT_eSPI/Processors/TFT_eSPI_ESP32.c muss ab Zei­le 110 geän­dert wer­den:

Mög­li­cher­wei­se wird das Pro­blem in einer zukünf­ti­gen Ver­si­on beho­ben, ansons­ten muss nach einem Update die Ände­rung erneut durch­ge­führt wer­den.

Außer­dem erscheint eine War­nung, dass die Touch­pins nicht defi­niert sind, sie kann igno­riert wer­den.

Zusätzlich benötigte Bibliotheken

Die in den Pro­gram­men ver­wen­de­te Biblio­thek U8g2_for_TFT_eSPI kann nicht über die Biblio­theks­ver­wal­tung instal­liert wer­den, sie muss her­un­ter­ge­la­den wer­den

🔗https://github.com/Bodmer/U8g2_for_TFT_eSPI

Kli­cke auf der Web­sei­te auf den grü­nen But­ton und füge die Biblio­thek mit Sketch -> zip-Biblio­thek hin­zu..

Das Programm

Konfiguration

Das Pro­gramm kann auf viel­fäl­ti­ge Art und Wei­se ange­passt wer­den:

  • die Far­be der Zei­ger (Zeig­erfar­be)
    die Far­ben kannst du dem Kopf des Pro­gramms ent­neh­men
  • die Far­be des inne­ren Krei­ses (Kreis­far­be)
  • die Far­be der äuße­ren Umran­dung (Rand­far­be)
  • Anzei­ge des Datums (Datu­m­An­zei­gen)
    true: Datum anzei­gen, fal­se: Datum ver­ber­gen
  • Anzei­ge der digi­ta­len Uhr­zeit (Zeit­Di­gi­tal)
    true: anzei­gen -> Sekun­den­zei­ger wird unab­hän­gig vom Wert der Varia­ble Sekun­den­zei­ger­Kreis als Kreis ange­zeigt
    fal­se: Zeit ver­ber­gen
  • Sekun­den­zei­ger voll­stän­dig oder nur als Kreis anzei­gen (Sekun­den­zei­ger­Kreis)
    true: nur den Kreis anzei­gen, fal­se: Sekun­den­zei­ger als Linie mit Kreis am Ende der Linie anzei­gen
  • die Anzei­ge der Stun­den­mar­kie­run­gen 12, 3, 6 und 9 (Zif­fern­an­zei­gen)
    true: Zif­fern anzei­gen, fal­se: Zif­fern ver­ber­gen

Erläuterungen zum Quellcode

  • das Pro­gramm ver­wen­det die Funk­ti­on WiFi­Mul­ti
    das WLAN-Netz­werk mit der bes­ten Signal­stär­ke wird auto­ma­tisch ver­bun­den
  • ab Zei­le 147 wer­den die ver­füg­ba­ren WiFi-Net­ze als Wer­te-Paar defi­niert:
    SSID des Routers/Repeaters, Pass­wort
    WiFiNetzwerke.addAP("Router_SSID", "xxxxxxxx");
    WiFiNetzwerke.addAP("Repeater_1", "xxxxxxxx");
  • die Syn­chro­ni­sa­ti­on mit dem NTP-Ser­ver kann etwas Zeit in Anspruch neh­men
    kommt nach 90 Sekun­den kei­ne Ver­bin­dung zustan­de, wird das Pro­gramm been­det
  • der BME280 kann unter­schied­li­che HEX-Adres­sen haben:
    0x76 oder 0x77
    mit die­sem ⇒Pro­gramm kannst du die Adres­se ermit­teln

Der Quellcode


Quellen


Letzte Aktualisierung: Mai 15, 2026 @ 19:39

Inhalt