Zum Inhalt springen

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();
  }
 
}