Hallo!
Ich möchte mir mit meinem Code auf einem LC - Display Temperatur , Luftfeuchtigkeit und das Datum + Uhrzeit anzeigen lassen. Die Ausgabe von Temperatur und Luftfeuchtigkeit funktioniert bereits, aber das Datum und die Uhrzeit machen mir Probleme. In diesem Code wird nur versucht die Zeit zu printen, aber dies funktioniert nicht ganz.
Das Problem:
Wenn man Programm in das Case 4 wechselt sollte es die Uhrzeit printen, aber es ist eine gewisse Zeit das Display leer und dann kommt kurz die Zeit mit einem chinesischen Zeichen dahinter und dann folgt wieder Case 1.
#include <DS3231.h>
#include "DHT.h"
#include <LiquidCrystal.h>
LiquidCrystal lcd(11, 10, 9, 8, 7, 6);
#define DHT1PIN 12
#define DHT2PIN 13
#define DHT1TYPE DHT11
#define DHT2TYPE DHT11
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
int ablauf;
DS3231 rtc(SDA, SCL);
void setup() {
lcd.begin(16, 2);
rtc.begin();
dht1.begin();
dht2.begin();
}
void loop() {
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
switch(ablauf){
case 0:
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" Temperaturen");
delay(2000);
ablauf++;
break;
case 1:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Innen:");
lcd.print(" ");
lcd.print(t1);
lcd.print(" ");
lcd.print("*C");
lcd.setCursor(0,1);
lcd.print("Aussen:");
lcd.print(" ");
lcd.print(t2);
lcd.print(" ");
lcd.print("*C");
delay(4000);
ablauf ++;
break;
case 2:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Luftfeuchtigkeit");
delay(2000);
ablauf++;
break;
case 3:
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Innen:");
lcd.print(" ");
lcd.print(h1);
lcd.print(" ");
lcd.print("%");
lcd.setCursor(0,1);
lcd.print("Aussen:");
lcd.print(" ");
lcd.print(h2);
lcd.print(" ");
lcd.print("%");
delay(4000);
ablauf ++;
break;
case 4:
lcd.clear();
lcd.setCursor(0,0);
lcd.println(rtc.getTimeStr());
delay(4000);
ablauf ++;
break;
}
if(ablauf == 5){
ablauf = 0;
}
}
LG