/************************************************************************************************* PROGRAMMINFO ************************************************************************************************** Funktion: TM1637 Uhr, Datum und Temperatur ************************************************************************************************** Version: 21.05.2022 ************************************************************************************************** Board: ESP32vn IoT UNO ************************************************************************************************** Libraries: C:\Users\User\Documents\Arduino D:\gittemp\Arduino II\A159 TM1637 Clock-DHT11\libraries DHT11 TM1637 ************************************************************************************************** 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 https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_dev_index.json **************************************************************************************************/ #include #include "time.h" #include #include #include const char* ssid = "xxx"; const char* password = "2xxx"; const char* ntp_server = "de.pool.ntp.org"; // lokale Zeitzone definieren // https://github.com/nayarsystems/posix_tz_db/blob/master/zones.csv #define TIMEZONE "CET-1CEST,M3.5.0/02,M10.5.0/03" #define CLK_PIN 18 #define DIO_PIN 5 TM1637Display display(CLK_PIN, DIO_PIN); // Datenstruktur für Display #define DHTPIN 4 int temperature_celsius; int temperature_fahrenheit; // Celsius Symbol: const uint8_t celsius[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Circle SEG_A | SEG_D | SEG_E | SEG_F // C }; // Fahrenheit Symbol: const uint8_t fahrenheit[] = { SEG_A | SEG_B | SEG_F | SEG_G, // Circle SEG_A | SEG_E | SEG_F | SEG_G // F }; #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) DHT dht = DHT(DHTPIN, DHTTYPE); void setup() { struct tm tdata; Serial.begin(115200); // mit dem WLAN verbinden; nach Ermitteln der Zeit kann die // Verbindung wieder getrennt werden Serial.printf("Verbindung herstellen mit %s ", ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(" Verbunden!"); // Zeit vom NTP-Server holen configTime(0, 0, ntp_server); // vor Trennung des WLANs einmal getLocalTime() // aufrufen; sonst wird die Zeit nicht übernommen getLocalTime(&tdata); setenv("TZ", TIMEZONE, 1); // Zeitzone einstellen // WLAN trennen WiFi.disconnect(true); WiFi.mode(WIFI_OFF); // Display auf mittl. Helligkeit einstellen 0-7 display.setBrightness(1); display.clear(); // Setup Sensor: dht.begin(); } void loop() { struct tm tdata; if (!getLocalTime(&tdata)) { Serial.println("Fehler beim Ermitteln der Zeit"); delay (10000); } else { // Zeit als Zahl HHMM mit Doppelpunkt in der Mitte und führenden Nullen // (sonst werden Zeiten in der ersten Stunde als xx statt 00:xx angezeigt) display.showNumberDecEx((tdata.tm_hour)*100 + tdata.tm_min, 0b01000000, true); delay(3000); // Datum als Zahl TTMM mit führender Null display.showNumberDec(tdata.tm_mday*100 + tdata.tm_mon+1, true); delay(3000); // Temperature einlesen: temperature_celsius = dht.readTemperature(); temperature_fahrenheit = dht.readTemperature(true); // Serieller Monitor: Serial.print("Temperatur: "); Serial.print(temperature_celsius); Serial.println ("°C"); Serial.print("Uhrzeit: "); Serial.print(tdata.tm_hour); Serial.print(":"); Serial.println(tdata.tm_min); //Serial.println(temperature_fahrenheit); // Temperatur am TM1637 display: display.showNumberDec(temperature_celsius, false, 2, 0); display.setSegments(celsius, 2, 2); delay(3000); /* display.showNumberDec(temperature_fahrenheit, false, 2, 0); display.setSegments(fahrenheit, 2, 2); delay(2000); */ } }