Smartes Gewächshaus Bodenwasserregulierung

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
}

Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden.
Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.

mfg ein Moderator.

So wie Du es im Code angegeben hast...

Im Übrigen könnte Dir der Arduino um die Ohren fliegen, wenn Du die Pumpe da versuchst direkt anzuschliessen.

Du darfst rugig jede Menge Klammern in der i-anweisung verwenden, damit's lesbarer wird

Hallo,
ich würde mal sagen,probieren ! So wie ich das sehe läuft die Pumpe einmal am Tag 1,5s wenn es zu trocken ist. Willst Du das so haben ?

Eventuell überdenkst du deine Logik nochmal. Zudem wird dir das mit der Zeit weglaufen da millis() nicht besonders genau ist. Wenn das immer zur selben Zeit passieren soll dann solltst Du über eine RTC nachdenken.