Projekte und Tutorials für Arduino › Foren › StartHardware-Forum › Zeitmodul DS3231 › Antwort auf: Zeitmodul DS3231
11. Dezember 2019 um 20:57 Uhr
#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();
}
}