Ich habe den Fehler gefunden.
Ich hatte im Sketch eine Zeile vergessen (** mit Sternchen markiert **) :
// Temperaturregelung von Wachstum 2
if (SchalterzustandSteckdose2 == false) {
digitalWrite(Relais_Steckdose2, LOW);
lcd.setCursor(8, 1); // Cursor setzen
lcd.print("w"); // ein w für "working" anzeigen
}
if (TempWachstum2 >= maximumTempWachstum2) { // Wenn die Temperatur gleich oder höher des festgelegten Maximums...
lcd.setCursor(8, 1); // Cursor setzen
lcd.print(" "); // das w überschreiben
digitalWrite(Relais_Steckdose2, HIGH);
**SchalterzustandSteckdose2 = true;**
}
if (TempWachstum2 <= minimumTempWachstum2) {
SchalterzustandSteckdose2 = false;
}
Peinlich , dass ich in meinem ersten Post, den falschen Abschnitt, nämlich "Temperaturregelung von Wachstum 1" als mögliche Fehlerquelle zitiert habe, hier war nämlich alles richtig.
Sry!
Ich kann mir also vorerst die Y- Kondensatoren sparen, gerade läuft so nämlich alles:).
Hier ist jetzt der komplette aktualisierte Sketch:
//Bibliotheken und Definieren von DHT22
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN 3 //==> Der Sensor wird an Pin 3 angeschlossen
#define DHTTYPE DHT22//==> Es handelt sich um einen DHT22 Sensor
DHT dht(DHTPIN, DHTTYPE); // Der Sensor wird ab jetzt mit "dht" angesprochen
// Bibliotheken und Definieren von LCD1602
#include <LiquidCrystal_I2C.h> // LiquidCrystal Bibliothek laden für LCD Display
LiquidCrystal_I2C lcd = LiquidCrystal_I2C(0x27, 16, 2); // so wenn ein 1602 display genutzt wird
#include <Wire.h> // Bibliothek für 1602 LCD Display
#include <OneWire.h> // OneWire- Bibliothek für DS18B20
#include <DallasTemperature.h> // DallasTemperature- Bibliothek für DS18B20
// Bibliotheken und Definieren für DS18B20
#define ONE_WIRE_BUS 2 // Das Datenkabel vom DS18B20 ist an Pin 2 angeschlossen
#define TEMPERATURE_PRECISION 12// ?
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress one, two; // bei mir sind zwei Temperatursensoren angeschlossen
//Pins für Relais- Schaltung am Arduino festlegen
#define Relais_Steckdose1 4 //==> Pin 4 ist "Steckdose 1"
#define Relais_Steckdose2 5 //==> Pin 5 ist "Steckdose 2"
#define Relais_Steckdose3 6 //==> Pin 6 ist "Steckdose 3"
#define Relais_Steckdose4 7 //==> Pin 7 ist "Steckdose 4"
// Minimum und -Maximumwerte für Parameter festlegen //Ich darf hier keine Kommazahlen verwenden, sonst kommt es zu Störungen!
#define minimumTempWachstum1 24 //==> Temperatur minimum Wachstum1
#define maximumTempWachstum1 26 //==> Temperatur maximum Wachstum1
#define minimumTempWachstum2 24 //==> Temperatur minimum Wachstum2
#define maximumTempWachstum2 26 //==> Temperatur maximum Wachstum2
#define minimumTempFruchtung 10 //==> Temperatur minimum Fruchtung
#define maximumTempFruchtung 16 //==> Temperatur maximum Fruchtung
#define minimumLFFruchtung 85 //==> LF minimum Fruchtung
#define maximumLFFruchtung 92 //==> LF maximum Fruchtung
// Schalterzustände der Steckdosen deklarieren
bool SchalterzustandSteckdose1 = false; // Steckdose 1 ist deaktiviert
bool SchalterzustandSteckdose2 = false; // Steckdose 2 ist deaktiviert
bool SchalterzustandSteckdose3 = false; // Steckdose 3 ist deaktiviert
bool SchalterzustandSteckdose4 = false; // Steckdose 4 ist deaktiviert
// Sensorwerte deklarieren
int TempWachstum1;
int TempWachstum2;
int TempFruchtung;
int LFFruchtung;
// LCD- Display
unsigned long timestore_LCD; // Zeitmerker für LCD Display
//=============================================================================
void setup() {
Serial.begin(9600); //Serielle Verbindung starten, falls ich mit dem seriellen Monitor arbeiten muss
// Sensoren und LCD starten
sensors. begin(); // DS18B20 Sensoren starten
dht.begin(); //DHT22 Sensor starten
lcd.init(); // für den LCD- Monitor
lcd.backlight(); // für den LCD- Monitor
//Pins deklarieren und Anfangszustand deklarieren (Alle Steckdosen einschalten am Anfang!!!)
pinMode(Relais_Steckdose1, OUTPUT); //
pinMode(Relais_Steckdose2, OUTPUT);
pinMode(Relais_Steckdose3, OUTPUT);
pinMode(Relais_Steckdose4, OUTPUT);
digitalWrite(Relais_Steckdose1, LOW);
digitalWrite(Relais_Steckdose2, LOW);
digitalWrite(Relais_Steckdose3, LOW);
digitalWrite(Relais_Steckdose4, LOW);
}
void loop() {
// Werte ablesen
int LFFruchtung = dht.readHumidity(); //die Luftfeuchtigkeit auslesen und unter „Luftfeutchtigkeit“ speichern
int TempFruchtung = dht.readTemperature();//die Temperatur auslesen und unter „Temperatur“ speichern
int TempWachstum1 = sensors.getTempCByIndex(0);
int TempWachstum2 = sensors.getTempCByIndex(1);
sensors.requestTemperatures();
// und auf dem LCD erneuern
if (millis() - timestore_LCD > 500 ) // wenn Pausenzeit um wird der Display erneuert
{
lcd.setCursor(0, 0);
lcd.print(TempWachstum1); // Temperatur von Wachstum1 anzeigen
lcd.print("\337C "); // Grad und dahinter Leerzeichen
lcd.print(TempWachstum2); // Temperatur von Wachstum2 anzeigen
lcd.print("\337C "); // Grad und dahinter Leerzeichen
lcd.print(TempFruchtung); // Temperatur von Wachstum1 anzeigen
lcd.print("\337C "); // Grad und dahinter Leerzeichen
lcd.setCursor(10, 1);
lcd.print(LFFruchtung); // LF von Fruchtung anzeigen
lcd.print(" %"); //
timestore_LCD = millis(); // Ausschaltzeit merken
}
// Temperaturregelung von Wachstum 1
if (SchalterzustandSteckdose1 == false) {
digitalWrite(Relais_Steckdose1, LOW);
lcd.setCursor(3, 1); // Cursor setzen
lcd.print("w"); // ein w für "working" anzeigen
}
if (TempWachstum1 >= maximumTempWachstum1) { // Wenn die Temperatur gleich oder höher des festgelegten Maximums...
lcd.setCursor(3, 1); // Cursor setzen
lcd.print(" "); // das w überschreiben
digitalWrite(Relais_Steckdose1, HIGH);
SchalterzustandSteckdose1 = true;
}
if (TempWachstum1 <= minimumTempWachstum1) {
SchalterzustandSteckdose1 = false;
}
// Temperaturregelung von Wachstum 2
if (SchalterzustandSteckdose2 == false) {
digitalWrite(Relais_Steckdose2, LOW);
lcd.setCursor(8, 1); // Cursor setzen
lcd.print("w"); // ein w für "working" anzeigen
}
if (TempWachstum2 >= maximumTempWachstum2) { // Wenn die Temperatur gleich oder höher des festgelegten Maximums...
lcd.setCursor(8, 1); // Cursor setzen
lcd.print(" "); // das w überschreiben
digitalWrite(Relais_Steckdose2, HIGH);
SchalterzustandSteckdose2 = true;
}
if (TempWachstum2 <= minimumTempWachstum2) {
SchalterzustandSteckdose2 = false;
}
// Temperaturregelung von Fruchtung
if (SchalterzustandSteckdose3 == false) {
digitalWrite(Relais_Steckdose3, LOW);
lcd.setCursor(15, 0); // Cursor setzen
lcd.print("w"); // ein w für "working" anzeigen
}
if (TempFruchtung >= maximumTempFruchtung) { // Wenn die Temperatur gleich oder höher des festgelegten Maximums...
lcd.setCursor(15, 0); // Cursor setzen
lcd.print(" "); // das w überschreiben
digitalWrite(Relais_Steckdose3, HIGH);
SchalterzustandSteckdose3 = true;
}
if (TempFruchtung <= minimumTempFruchtung) {
SchalterzustandSteckdose3 = false;
}
// LF- Regulierung von Fruchtung
if (SchalterzustandSteckdose4 == false) {
digitalWrite(Relais_Steckdose4, LOW);
lcd.setCursor(15, 1); // Cursor setzen
lcd.print("w"); // ein w für "working" anzeigen
}
if (LFFruchtung >= maximumLFFruchtung) { // Wenn die Luftfeuchtgkeit gleich oder höher des festgelegten Maximums...
lcd.setCursor(15, 1); // Cursor setzen
lcd.print(" "); // das w überschreiben
digitalWrite(Relais_Steckdose4, HIGH);
SchalterzustandSteckdose4 = true;
}
if (LFFruchtung <= minimumLFFruchtung) {
SchalterzustandSteckdose4 = false;
}
}
Vielen Dank für Eure Hilfe!