Hi Leute,
ich habe ein Programm für ein automatisiertes Mini-Gewächshaus geschrieben.
Vor ein paar Jahren habe ich das gleiche schon mal am Raspberry Pi gemacht. Nun dachte ich aber, dass sich der Arduino eigentlich sogar etwas besser dazu eignet... Ich bin absoluter Anfänger was Arduino und C++ angeht, aber ich fuchs mich durch. Es gibt noch ein paar Dinge zutun aber die wichtigsten Dinge funktionieren schon mal...
Ich habe jetzt folgendes Problem:
Ich möchte Lüfter im Gewächshaus über eine Zeitsteuerung aktivieren und deaktivieren. Es soll also möglich sein, einzustellen wie lange die Lüfter aktiv sein sollen z.B. 12 Minuten und über einen zweiten Wert, wie lange der Lüfter anschließend inaktiv bleiben soll, z.B. 31 Minuten.
Ich nutze ein RTC- Modul DS3231 mit der RTClib Bibliothek.
Ich hab die letzte 4 Stunden so viele Sachen ausprobiert (Schnipsel von anderen kopiert und bei mir eingebaut) - alle haben nicht so funktioniert wie ich es mir wünsche. Ich stehe also irgendwie immer noch bei Null
Kann mir hier vielleicht jemand helfen?
#include <DHT.h> // DHT Bibliothek laden
#include "RTClib.h" // RTC-Libary laden
#define DHTPIN 4 // Der DHT-Sensor wird an PIN 4 angeschlossen
#define DHTTYPE DHT22 // Es handelt sich um den DHT22 Sensor
#define PIN_RELAY2_LUFT 10 // Lüfter
DHT dht(DHTPIN, DHTTYPE); // Der Sensor wird ab jetzt mit „dth“ angesprochen
RTC_DS3231 rtc;
int luefter_steuerung = 1; // Lüftersteuerung nach Luftfeuchtigkeit = 0, Lüftersteuerung nach Zeitschaltuhr = 1
int luftfeuchte_max = 90; // Maximale Luftfeuchtigkeit ueber derer die Luefter zum trocknen einschalten sollen (Bedingung: Lüftersteuerung = 0)
int luefter_aktiv = 12;
int luefter_inaktiv = 31;
void setup(void)
{
Serial.begin(9600); // Start serieller Monitor
dht.begin(); // DHT22 Sensor starten
rtc.begin(); // RTC Modul starten
rtc.adjust(DateTime(F(__DATE__), F(__TIME__))); // Aktuelle PC-Uhrzeit übernehmen
pinMode(PIN_RELAY2_LUFT, OUTPUT); // Pin an Relais 2 auf Ausgabe stellen
digitalWrite(PIN_RELAY2_LUFT, HIGH); // Pin an Telais 2 zu Beginn ausschalten
}
void loop(void){
DateTime now = rtc.now(); // Uhrzeit über RTC Modul abfragen
float DHT_Luftfeuchtigkeit = dht.readHumidity(); // die Luftfeuchtigkeit auslesen und definieren als „DHT_Luftfeutchtigkeit“
float DHT_Temperatur = dht.readTemperature(); // die Temperatur auslesen und definieren als „DHT_Temperatur“
if (luefter_steuerung == 0 && DHT_Luftfeuchtigkeit >= luftfeuchte_max) { // Wenn Luftfeuchtigkeit höher max. Grenzwert, dann
digitalWrite(PIN_RELAY2_LUFT, LOW); // Relais 2 (Lüfter) einschalten
Serial.println("Luftfeuchtigkeit ODER Bodentemperatur zu hoch > Lüftung EIN"); // serielle Monitor Ausgabe: "Luftfeuchtigkeit ODER Bodentemperatur zu hoch > Lüftung EIN"
}
else if (luefter_steuerung == 0) { // Sonst noch wenn
digitalWrite(PIN_RELAY2_LUFT, HIGH); // Relais 2 (Lüfter) ausschalten
Serial.println("Luftfeuchtigkeit UND Bodentemperatur OK"); // serielle Monitor Ausgabe: "Luftfeuchtigkeit UND Bodentemperatur OK"
}
if (luefter_steuerung == 1 && XXXXXXXXXXX) {
digitalWrite(PIN_RELAY2_LUFT, LOW); // Relais 2 (Lüfter) einschalten
Serial.println("Zeitsteuerung: Lüfter EIN"); // serielle Monitor Ausgabe: "Luftfeuchtigkeit ODER Bodentemperatur zu hoch > Lüftung EIN"
}
else (luefter_steuerung == 1 && XXXXXXXXXXX) { // Sonst wenn
digitalWrite(PIN_RELAY2_LUFT, HIGH); // Relais 2 (Lüfter) ausschalten
Serial.println("Zeitsteuerung: Lüfter AUS"); // serielle Monitor Ausgabe: "Luftfeuchtigkeit UND Bodentemperatur OK"
}
}
delay(2000); // Pause (2000 = 2 Sekunden)
}
Vielen Dank
PS: der Code hier ist stark eingekürzt