Guten Tag,
so nachdem ich wieder aus dem Krankenhaus raus bin und mich erholt habe (hatte Corona) möchte ich gerne mit meinem Projekt weitermachen.
Leider musste ich feststellen das ich etwas übersehen hatte in meiner Planung da die Steuerung für ein Terrarium sein soll in dem 4 Kornnattern leben und die nicht permanent eine hohe Luftfeuchtigkeit benötigen habe ich bei dem übernommenen Code von jurs (vielen Dank dafür nochmal das du sowas online stellst) den Teil mit dem kurzzeittimer entfernt und wollte es mit der Abfrage ganz am Ende machen.
Doch dabei wird ja immer gesprüht auch wenn es nicht nötig ist daher war ich am Überlegen ob es möglich ist diesen programmteil nur zu aktiveren über einen Taster, wenn man es braucht habe aber bisher nichts darüber gefunden vielleicht könnt ihr ja den richtigen tipp oder Lösung geben.
Ich habe jetzt nur den loop angehängt da der gesamte Code zu groß ist da hier nur 9000 Zeichen erlaubt sind ich hätte etwas über 10.000 Zeichen sind wohl etwas zu viele Erklärungen drin gelandet und der Teil von jurs ist auch recht groß aber egal ich hoffe das reicht.
Vielen dank
void loop()
{
char buffer[30];
static unsigned long lastMillis;
static int lastMinute;
int stunden, minuten, sekunden, dummy;
if (millis()-lastMillis>1000) // nur einmal pro Sekunde
{
lastMillis=millis();
rtcReadTime(dummy, dummy, dummy, wochentag, stunden, minuten, sekunden);
updateDisplay(wochentag, stunden, minuten, sekunden); // Funktion zur Anzeige auf LCD
if (minuten!=lastMinute) // die aktuelle Minute hat gewechselt
{
lastMinute=minuten;
snprintf(buffer,sizeof(buffer),"%02d:%02d Uhr",stunden,minuten);
Serial.println(buffer);
relaisSchaltenNachZeit(stunden,minuten);
}
}
behandleSerielleBefehle();
// *INDENT-OFF*
sensors.requestTemperatures();
float t = dht22.readTemperature(); // Die Temperatur wird vom DHT22 ausgelesen, Wert in "t" schreiben
float h = dht22.readHumidity(); // Die Luftfeuchte wird vom DHT22 ausgelesen, Wert in "h" schreiben
lcd.setCursor(0, 2); // Anfang auf Stelle 0, Zeile 3 setzen
lcd.print(t); // Wert aus "t" ausgeben (Temperatur)
lcd.setCursor(6, 2); // Anfang auf Stelle 6, Zeile 3 setzen
lcd.print("\337C"); // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(10, 2); // Anfang auf Stelle 9, Zeile 3 setzen
lcd.print(h); // Wert aus "h" ausgeben (Luftfeuchtigkeit)
lcd.setCursor(16, 2); // Anfang auf Stelllcd.setCursore 9, Zeile 1 setzen
lcd.print("%"); // % auf LCD ausgeben
lcd.setCursor(0, 3); // Anfang auf Stelle 0, Zeile 4 setzen
lcd.print(sensors.getTempCByIndex(0)); // Temperatur ausgeben
lcd.setCursor(6, 3); // Anfang auf Stelle 9, Zeile 4 setzen
lcd.print("\337C"); // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
lcd.setCursor(10, 3); // Anfang auf Stelle 10, Zeile 4 setzen
lcd.print(sensors.getTempCByIndex(1)); // Temperatur ausgeben
lcd.setCursor(16, 3); // Anfang auf Stelle 16, Zeile 4 setzen
lcd.print("\337C"); // °C (mit"\337" wird das Gradzeichen dargestellt)auf LCD ausgeben
// *INDENT-ON*
if(dht22.readHumidity() <= 50) //ist RLF kleiner oder gleich als
{
digitalWrite(RelayPin, LOW); //HIGH = Relais An
}
if(dht22.readHumidity() >= 65) //ist RLF grösser oder gleich als
{
digitalWrite(RelayPin, HIGH); //LOW = Relais Aus
}
tasterstatus=digitalRead(taster);
if (tasterstatus == HIGH) //Wenn Wasserstand niedrig(Schwimmerschalter) kontakt
{
digitalWrite(LEDrot, HIGH); //LED an
}
else //sonst
{
digitalWrite(LEDrot, LOW); //LED aus
}}