/************************************************************************************************* PROGRAMMINFO ************************************************************************************************** Funktion: NANO RTC OLED-Display ************************************************************************************************** Version: 18.02.2023 ************************************************************************************************** Board: NANO ************************************************************************************************** Libraries: https://github.com/espressif/arduino-esp32/tree/master/libraries C:\Users\User\Documents\Arduino D:\gittemp\Arduino II\A156_Wetterdaten_V3 ************************************************************************************************** C++ Arduino IDE V1.8.19 ************************************************************************************************** Einstellungen: https://dl.espressif.com/dl/package_esp32_index.json http://dan.drown.org/stm32duino/package_STM32duino_index.json http://arduino.esp8266.com/stable/package_esp8266com_index.json **************************************************************************************************/ #include #include #ifdef U8X8_HAVE_HW_SPI #include #endif #ifdef U8X8_HAVE_HW_I2C #include #endif U8G2_SH1106_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); unsigned long delayTime; #include #include "RTClib.h" RTC_DS3231 rtc; char daysOfTheWeek[7][12] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" }; void setup () { Serial.begin(115200); u8g2.begin(); rtc.begin(); rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); /* To manualy set date and time, remove the coment // signs and enter new values in the followingline in this sequence: year, day, month, hour, minute and second.*/ //rtc.adjust(DateTime(2020, 2, 24, 10, 00, 0)); } void loop () { DateTime now = rtc.now(); //Day of the week Serial.print("Wochentag: "); Serial.print(daysOfTheWeek[now.dayOfTheWeek()]); Serial.println(); //one tab //Current time: Serial.print("Uhrzeit: "); if (now.hour() < 10) { Serial.print("0"); Serial.print(now.hour()); } else { Serial.print(now.hour(), DEC); } Serial.print(':'); if (now.minute() < 10) { Serial.print("0"); Serial.print(now.minute()); } else { Serial.print(now.minute(), DEC); } Serial.print(':'); if (now.second() < 10) { Serial.print("0"); Serial.print(now.second()); } else { Serial.print(now.second(), DEC); } Serial.println(); //one tab //Current date: Serial.print("Datum: "); if (now.day() < 10) { Serial.print("0"); Serial.print(now.day()); } else { Serial.print(now.day(), DEC); } Serial.print('.'); if (now.month() < 10) { Serial.print("0"); Serial.print(now.month()); } else { Serial.print(now.month(), DEC); } Serial.print('.'); Serial.print(now.year(), DEC); Serial.print(""); Serial.println(); //Temperature: Serial.print("Temperatur: "); Serial.print(rtc.getTemperature()); Serial.println(" °C"); Serial.println(); delay(2000); //**** OLED-DISPLAY ********************* u8g2.setFont(u8g2_font_courR10_tf); u8g2.firstPage(); do { u8g2.setCursor(33, 10); u8g2.print(daysOfTheWeek[now.dayOfTheWeek()]); //Datum u8g2.setCursor(20, 27); if (now.day() < 10) { u8g2.print("0"); u8g2.print(now.day()); } else { u8g2.print(now.day(), DEC); } u8g2.print('.'); if (now.month() < 10) { u8g2.print("0"); u8g2.print(now.month()); } else { u8g2.print(now.month(), DEC); } u8g2.print('.'); u8g2.print(now.year(), DEC); //Uhrzeit u8g2.setCursor(30, 45); if (now.hour() < 10) { u8g2.print("0"); u8g2.print(now.hour()); } else { u8g2.print(now.hour(), DEC); } u8g2.print(':'); if (now.minute() < 10) { u8g2.print("0"); u8g2.print(now.minute()); } else { u8g2.print(now.minute(), DEC); } u8g2.print(':'); if (now.second() < 10) { u8g2.print("0"); u8g2.print(now.second()); } else { u8g2.print(now.second(), DEC); } //Temperatur u8g2.setCursor(35, 63); u8g2.print(rtc.getTemperature()); u8g2.print("\xB0""C"); } while ( u8g2.nextPage() ); delay(delayTime); }