Zum Inhalt springen

Dirk

Verfasste Forenbeiträge

Ansicht von 1 Beitrag (von insgesamt 1)
  • Autor
    Beiträge
  • als Antwort auf: Zeitmodul DS3231 #6709
    Dirk
    Teilnehmer

    Ja, das war der Fehler.
    Mittlerweile klappt alles. Sogar die Zeitschaltung des Displays.
    Vielen Dank.
    Das Sketch sieht jetzt so aus:

    #include "DHT.h"
    #include <Wire.h> 
    #include <LiquidCrystal_I2C.h>
    #include <DS3231.h>
    
    // Init the DS3231 using the hardware interface
    DS3231  rtc(SDA, SCL);
    DHT dht;
    LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display
    
    Time t;
    String tage;
    void setup()
    {
      dht.setup(2); // data pin 2
      lcd.init();                      // Initialisiert das Display 
      rtc.begin();                     // Initialisiert das Zeitmodul
      //rtc.setTime(21, 40, 0);           //Hiermit kann man die Uhr stellen
      lcd.backlight();
      //Serial.begin(115200);
      lcd.setCursor(0,0);
      lcd.print("Version 27.Nov19");
    }
    
    void loop(){
     
     //delay(dht.getMinimumSamplingPeriod());
      
      lcd.setCursor(0,0);
      //Tage ins deutsche übersetzen
      tage = rtc.getDOWStr(2);
      if (tage == "Monday") {
      tage = "Montag";
       }
     else if (tage == "Tuesday") {
      tage = "Dienstag";
       }
     else if (tage == "Wednesday") {
      tage = "Mittwoch";
       }
     else if (tage == "Thursday") {
      tage = "Donnerstag";
       }
     else if (tage == "Friday") {
      tage = "Freitag";
       }
     else if (tage == "Saturday") {
      tage = "Samstag";
       }
     else if(tage == "Sunday") {
      tage = "Sonntag";
      } 
      lcd.print(tage);
      lcd.setCursor(11,0);
      lcd.print(rtc.getTimeStr(1));
      float humidity = dht.getHumidity();
      float temperature = dht.getTemperature();
      lcd.setCursor(0,1);
      lcd.print(temperature, 1); 
      lcd.print("\xDF""C");
      lcd.setCursor(7,1);
      lcd.print(humidity, 1);
      lcd.print("%relF");
      display_schalten();
      delay(1000);
    }
    
    //Display an und ausschalten
    void display_schalten(){
      t = rtc.getTime();      // Die Zeit auslesen vom DS3231
      int stunde = t.hour;
      int minute = t.min;
      int sekunde = t.sec;
      //Das Display um 4 Uhr morgens einmal löschen, damit der Tag richtig dargestellt wird
      // Weil längere Tagesnamen ihren Namen nicht löschen.
      if (stunde == 4 && sekunde == 5){
        lcd.clear();
      }
     // In der Zeit von 6 Uhr bis 21:59 Display anschalten
     if (stunde > 5 && stunde < 22 ){
      lcd.backlight();
     }
     else if (stunde == 22 && minute == 0){
      lcd.clear();
      delay(100);
      lcd.setCursor(0,0);
      lcd.print("Gute Nacht");
      lcd.setCursor(0,1);
      lcd.print("lieber Dirk");
     }
      // Display ausschalten
      else{
       lcd.noBacklight();
      }
     
    }
Ansicht von 1 Beitrag (von insgesamt 1)