Frage zum Feuchtigkeitssensor

Hallo,
bin Neuling und habe eine Frage. Ich habe mir einen Arduino Uno gekauft und bin im programmieren nicht gut.
Ich möchte eine automatische Bewässerungsanlage bauen.
Der Sensor soll nicht dauerhaft messen weil er sich sonst zersetzt (Elektrolyse) deswegen nur alle 10 Minuten. Wenn die Pumpe nur 10-15 Sekunden pumpen soll was soll ich dann unten im Sketch hinschreiben?

LG Benjamin

Hier ist mein Sketch

int messwert=0;
int Pumpe=6;
long interval = 10000;
long previousTime = 0;

void setup()
{
Serial.begin(9600);
pinMode (6,OUTPUT); 
}

void loop()

{

messwert=analogRead(A0);

unsigned long currentTime = millis();

Serial.print("Feuchtigkeits-Messwert:");

Serial.println(messwert);

delay(600000);

if (messwert <90)
digitalWrite(Pumpe, HIGH);    // hier brauche ich den Befehl, dass die Pumpe nur 10-15 Sekunden pumpt

}
else 
{
digitalWrite(Pumpe, LOW); 
}

}

&&{ :o

if (messwert < 90) {
    unsigned long currentTime = millis();

    while (millis() - currentTime < interval)
      digitalWrite(Pumpe, HIGH);    // hier brauche ich den Befehl, dass die Pumpe nur 10-15 Sekunden pumpt
  }
  
  digitalWrite(Pumpe, LOW);

So mit while z.b aber der Arduino macht in den 10 Sekunden nichts anderes. Aber durch dein gigantisches delay läßt du ihn ja auch schon 10 min nichts tun. Das müßtes du nochmal überdenken ,so kannst du keine weiteren Dinge vom Arduino gleichzeitig verlangen und erwarten.

Was soll das delay (600000); ?

Du brauchst noch die Zeit seit dem Start der Pumpe.

if (messwert <90) {
   If ( currentTime - previousTime < 15000 )
      digitalWrite(Pumpe, HIGH);  
   else
      digitalWrite (Pumpe,  LOW ); 
} else {
   previousTime = currentTime; 
   digitalWrite(Pumpe, LOW); 
}

Das geht nur ohne delay. Und wird dir zeigen, ob du es wirklich so willst wie du schreibst. Wenn der Messwert unter die Grenze fällt, läuft die Pumpe genau 1 mal, max. 15 Sekunden lang.

Hallo,

prinzipiell sind ja die Anmerkungen zu delay() völlig richtig und er sollte es sich auch anschauen.

Allerdings: er misst alle 10 minuten 1x. Hat also auch nur alle 10 Minuten einen neuen Meßwert.
Abhängig davon will er für 10-15s die Pumpe laufen lassen.
Also ganz simpel:

 delay(600000);

if (messwert <90)
digitalWrite(Pumpe, HIGH);    // hier brauche ich den Befehl, dass die Pumpe nur 10-15 Sekunden pumpt
delay(10000);          // Punke 10s anlassen
digitalWrite(Pumpe, LOW);
}

Damit verlängert sich zwar sein Meßzyklus um die Laufzeit der Punpe wenn diese eingeschaltet wurde, das dürfte in der konkreten Anwendung aber genau 0 Nachteile haben.

Ich will damit sagen: ob man delay() einsetzen kann hängt in erster Linie von der konkreten Anwendung ab.
Man muß bei einer klar definierten Aufgabe nicht zwingend immer die Lösung so anlegen, daß man in Zukunft jede mögliche Sache hinzufügen kann.

Gruß aus Berlin
Michael

@amithlon

So hatte ich den TO auch verstanden. Bei #2 könnte mann aber in der Schleife noch andere Dinge machen z.b Zisterne überprüfen . Das andere delay könnte man auch ersetzen um andere Aufgaben zu erledigen. Aber wie du schon schreibst

Ich will damit sagen: ob man delay() einsetzen kann hängt in erster Linie von der konkreten Anwendung ab.

der Zweck heiligt die Mittel.

Hatte hier mal aber einen geeingeten Sensor präsentiert:
https://forum.arduino.cc/index.php?topic=420688.0

Die was auf Leitwert basieren, haben auch mit Dünger und Co. ein Problem.
IMMER kapazitive Bodenfeuchte Sensoren verwenden.