
Das NTP-Protokoll (Network Time Protocol) dient dazu internetfähige Geräte mit der aktuellen Zeit zu versorgen. Zeit und Datum sollen auf einem OLED angezeigt werden.
So sieht es aus:


Anschluss an einem Arduino MKR 1010

Installiere mit dem Boardverwalter das passende Board:
Nach dem Start des Programms werden die IP und die aktuelle Zeit im Seriellen Monitor angezeigt. Weil die IP über DHCP vergeben wird, kann sie jedesmal eine andere sein. Für die Anzeige spielt das aber keine Rolle.

Benötigte Bibliotheken:
![]() | ![]() |

⇒u8g2
Binde die benötigten Bibliotheken ein und definiere die Variablen.Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | // Arduino UNO WiFi Rev2, MKR 1010, Nano 33 IoT // #include “WiFiNINA.h” // #include “NTP.h” // Arduino R4 WiFi #include “WiFiS3.h” #include “NTP.h” // alle Boards #include “U8g2lib.h” /* Typbezeichnung mit Bildschirmgröße in Pixeln 1 = page buffer mode, F = full screen buffer mode Hardware I2C Name des OLEDs Rotation R0 (keine) */ // Parameter 0,96 Zoll SSD1306 U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE); // Parameter 1,3 Zoll SH1106 // U8G2_SH1106_128X64_NONAME_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE); // SSID des Routers und Passwort char Router[] = “Router_SSID”; char Passwort[] = “xxxxxxxx”; WiFiUDP wifiUdp; NTP ntp(wifiUdp); // Zeit bis zur nächsten Messung static unsigned long GesicherteStartZeit = 0; unsigned long Startzeit; // 30 Sekunden Intervall, kann angepasst werden int Intervall = 30000; |
Der setup-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 | void setup() { Serial.begin(9600); delay(500); // WiFi starten DHCP WiFi.begin(Router, Passwort); while (WiFi.status() != WL_CONNECTED) { delay(500); } // SSID des Routers anzeigen Serial.print(“Verbunden mit ”); Serial.println(WiFi.SSID()); // IP anzeigen Serial.print(“IP: ”); Serial.println(WiFi.localIP()); /* Zeitzone CEST: Central European Summertime Beginn europäische Sommerzeit letzter Sonntag im März 2 Uhr GMT + 2 Stunden */ ntp.ruleDST(“CEST”, Last, Sun, Mar, 2, 120); // CET: Central European Time // Beginn Normalzeit letzter Sonntag im Oktober 3 Uhr GMT + 1 Stunde ntp.ruleSTD(“CET”, Last, Sun, Oct, 3, 60); ntp.begin(); // OLED starten oled.begin(); // Schriftart oled.setFont(u8g2_font_courB24_tf); // Zeichenfarbe weiß oled.setDrawColor(1); // horizontale Schrift oled.setFontDirection(0); // Datum und Zeit beim Start anzeigen ntp.update(); oled.clearDisplay(); oled.firstPage(); do { oled.setCursor(2, 15); oled.setFont(u8g2_font_t0_22_te); // Tag: führende 0 ergänzen if (ntp.day() < 10) oled.print(“0”); oled.print(ntp.day()); oled.print(“.”); // Monat: führende 0 ergänzen if (ntp.month() < 10) oled.print(“0”); oled.print(ntp.month()); oled.print(“.”); // Jahr oled.print(ntp.year()); // horizontale Linie oled.drawHLine(1, 22, oled.getDisplayWidth()); oled.setCursor(2, 63); // Uhrzeit // Stunden: führende 0 ergänzen oled.setFont(u8g2_font_logisoso32_tf); if (ntp.hours() < 10) oled.print(“0”); oled.print(String(ntp.hours()) + “:”); // Minuten: führende 0 ergänzen if (ntp.minutes() < 10) oled.print(“0”); oled.print(String(ntp.minutes())); } while (oled.nextPage()); } |
Der loop-Teil. Beachte die Kommentare.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | void loop() { // Startzeit setzen Startzeit = millis(); // wenn das festgelegte Intervall erreicht ist if (Startzeit - GesicherteStartZeit > Intervall) { // Zeit aktualisieren ntp.update(); oled.clearDisplay(); // Startzeit zurücksetzen GesicherteStartZeit = Startzeit; oled.setCursor(3, 20); oled.firstPage(); do { oled.setCursor(2, 15); oled.setFont(u8g2_font_t0_22_te); // Tag: führende 0 ergänzen if (ntp.day() < 10) oled.print(“0”); oled.print(ntp.day()); oled.print(“.”); // Monat: führende 0 ergänzen if (ntp.month() < 10) oled.print(“0”); oled.print(ntp.month()); oled.print(“.”); oled.print(ntp.year()); // horizontale Linie oled.drawHLine(1, 22, oled.getDisplayWidth()); oled.setCursor(2, 63); // Uhrzeit // Stunden: führende 0 ergänzen oled.setFont(u8g2_font_logisoso32_tf); if (ntp.hours() < 10) oled.print(“0”); oled.print(String(ntp.hours()) + “:”); // Minuten: führende 0 ergänzen if (ntp.minutes() < 10) oled.print(“0”); oled.print(String(ntp.minutes())); } while (oled.nextPage()); } } |
Verwandte Anleitungen:
- Datum und Zeit mit ESP und time.h anzeigen
- DHT — Messdaten und Zeit auf TFT anzeigen
- Stoppuhr
- Uhr mit TFT 240x240 Pixeln
- Zeit mit time.h auf einem TFT anzeigen
- Wecker mit einem RTC-Modul
- Zeit im Seriellen Monitor mit ESP-Mikrocontroller anzeigen
- Datum, Uhrzeit und Temperatur auf einem LCD mit einem RTC-Modul anzeigen
- Uhrzeit und Temperatur auf einem 4‑stelligen 7‑Segment-Modul anzeigen
- Zeit mit time.h auf einer 4‑stelligen 7‑Segment-Anzeige darstellen
Letzte Aktualisierung:








