Hallo, ich habe von der Schule aus die Aufgabe eins smartes Gewächshaus zu bauen und um mich um die Bodenbewässerung zu kümmern. Dabei benutze ich ein Feuchtigkeit Sensor und eine Wasserpumpe, die in einem Wassertank steht. Also ich hab mal ein Programm geschrieben und wollte euch mal fragen ob das so stimmt, und wie ich den Arduino genau stecken soll.
const int soilMoisturePin = A0; // Sensor an A0
const int pumpPin = 7; // Pumpe/Relais an D7
// --- Schwellenwert & Zeiten ---
const int threshold = 500; // Unterhalb dieses Wertes wird gegossen
const int pumpDuration = 1500; // Pumpe läuft 1,5 Sekunden = ca. 5–6 ml (je nach Pumpe)
const unsigned long wateringInterval = 86400000UL; // 24 Stunden in Millisekunden (einmal pro Tag)
unsigned long lastWateringTime = 0; // Zeitpunkt der letzten Bewässerung
void setup() {
pinMode(pumpPin, OUTPUT); // Pumpenpin als Ausgang
digitalWrite(pumpPin, LOW); // Pumpe aus
Serial.begin(9600); // Serielle Ausgabe starten
}
void loop() {
unsigned long currentTime = millis(); // Aktuelle Zeit seit Start in Millisekunden
int moisture = analogRead(soilMoisturePin); // Feuchtigkeit messen
Serial.print("Feuchtigkeit: ");
Serial.println(moisture);
// Prüfen, ob genug Zeit vergangen ist UND ob es zu trocken ist
if (moisture < threshold && (currentTime - lastWateringTime >= wateringInterval)) {
Serial.println("Zu trocken und Zeit zum Gießen. Pumpe läuft...");
digitalWrite(pumpPin, HIGH); // Pumpe ein
delay(pumpDuration); // Wartezeit: wie lange die Pumpe laufen soll
digitalWrite(pumpPin, LOW); // Pumpe aus
Serial.println("Pumpe gestoppt.");
lastWateringTime = currentTime; // Zeitpunkt der letzten Bewässerung speichern
}
delay(10000); // Alle 10 Sekunden neu messen, ob’s trocken ist
}