Inhalt
Das NTP-Protokoll
Das NTP (Network Time Protocol) ist ein Protokoll zur Synchronisierung von Uhren in Computersystemen. Im Internet existieren öffentlich zugängliche NTP-Server, die sich zur Zeitsynchronisation nutzen lassen.
Darstellung auf dem OLED
Zeit und Datum sollen auf einem OLED angezeigt werden.

Benötigte Bauteile
Bibliotheken installieren


Informationen zur Bibliothek u8g2:
Der Schaltplan
Wemos D1 Mini

Wemos D1 im Arduinoformat

Das Programm
Das Programm baut über DHCP eine Verbindung zum lokalen WLAN auf,
Du musst die Router-SSID und das Passwort anpassen.
Wenn die Verbindung erfolgreich hergestellt wurde, zeigt der Serielle Monitor die SSID des Routers und die IP-Adresse an.

// Bibliotheken einbinden
# include
# include
# include
# include
# include
/*
Typbezeichnung mit Bildschirmgröße in Pixeln
1 = page buffer mode
Hardware I2C
Name des OLEDs
Rotation R0 (keine)
*/
U8G2_SSD1306_128X64_NONAME_1_HW_I2C oled(U8G2_R0, U8X8_PIN_NONE);
// SSID des Routers und Passwort
char Router[] = "SSID_des_Routers";
char Passwort[] = "xxxxxxx";
// NTP starten
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;
void setup()
{
Serial.begin(9600);
delay(500);
// WiFi starten DHCP
WiFi.begin(Router, Passwort);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
}
// SSID des Routers im Seriellen Monotor 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 starten
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());
}
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;
// Datum und Zeit auf dem OLED anzeigen
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());
}
}
Funduino - Dein Onlineshop für Mikroelektronik
-
Dauerhaft 10% Rabatt für Schüler, Studenten und Lehrkräfte
-
Mehr als 3.500 Artikel sofort verfügbar!
-
Über 8 Jahre Erfahrung mit Arduino, 3D-Druck und co.
SALE