Aus dem Artikel zu: Intelligente Bewässerung & Nährstoffdosierung: Automatisierung leicht gemacht
// Vereinfachtes Arduino/ESP32 Code-Beispiel für Wasserstandsregler
const int waterLevelPin = 2; // Digitaler Eingang für Schwimmerschalter
const int pumpRelayPin = 4; // Digitaler Ausgang für Relais
unsigned long pumpStartTime = 0;
const long maxPumpRunTime = 60000; // 60 Sekunden max. Laufzeit (ms)
void setup() {
pinMode(waterLevelPin, INPUT_PULLUP); // Schwimmerschalter mit Pullup
pinMode(pumpRelayPin, OUTPUT);
digitalWrite(pumpRelayPin, HIGH); // Pumpe AUS (Relais oft inverted)
Serial.begin(115200);
}
void loop() {
if (digitalRead(waterLevelPin) == LOW) { // Wasserstand zu niedrig (Schalter geschlossen)
if (digitalRead(pumpRelayPin) == HIGH) { // Pumpe ist noch AUS
Serial.println("Wasserstand niedrig, Pumpe AN.");
digitalWrite(pumpRelayPin, LOW); // Pumpe AN
pumpStartTime = millis();
}
} else { // Wasserstand ausreichend
if (digitalRead(pumpRelayPin) == LOW) { // Pumpe ist noch AN
Serial.println("Wasserstand OK, Pumpe AUS.");
digitalWrite(pumpRelayPin, HIGH); // Pumpe AUS
}
}
// Max. Laufzeit Überwachung für Sicherheit
if (digitalRead(pumpRelayPin) == LOW && (millis() - pumpStartTime > maxPumpRunTime)) {
Serial.println("WARNUNG: Pumpe läuft zu lange! Automatisch ausgeschaltet.");
digitalWrite(pumpRelayPin, HIGH); // Pumpe AUS
}
}