wiedereinschalten verzögern millis() ?

Hallo, habe nun folgendes Problem, das ich gern eine Verzögerung möchte, wenn es einmal durchgelaufen ist. Das ganze ist ein Gießautomat, also wenn eine festgelegte Wassermenge gegossen wurde, soll eine feste Zeit gewartet werde, damit der Bodensensor etwas messen kann. Sollte die Wassermenge nicht reichen, dann noch mal giessen. Schön wäre noch ein Zähler, der dann nach zB. 3 Versuchen abbricht ( daran geht es als nächstes!) Soweit funktioniert es, ich habe ein Delay(kommt wieder raus) zum Test eingefügt, um zu sehen, das er auch mal in LOW geht. (Blinken geht, im Test)

 if (Boden > (boden_Wert - boden_hysterese))
			{ if (reedSensor_wert == LOW && wcMAG_Wert == LOW)
			  
				  {
				  	digitalWrite(pumpe, HIGH);
				    digitalWrite(blumeMAG, HIGH);
					  
			     } 
			  
			  else
				{   
					digitalWrite(pumpe,LOW);
					digitalWrite(blumeMAG,LOW);
				}
				
			if (millis() - zeitletzterMessung > 3000)                //hier liegt mein Problme
			 {
				 zeitletzterMessung = millis();
				 digitalWrite(pumpe,LOW);
				 digitalWrite(blumeMAG,LOW);
				 delay(1000);  // test , wieder löschen!!!!
			 }
		 }

Den gesamten Code habe ich angehängt.

MfG Marco

saalesteuerung_2014.ino (5.98 KB)

ich habe mich jetzt nicht in die Tiefen deines ganzen Codes eingearbeitet, aber in etwas so geht das:

(in Pseudo-Code geschrieben)

if (trocken && ( millis() - Startzeit_Giessen > Giessperiode){
    Wasser an;
    Startzeit_Giessen = millis();
} 
 if ( millis() - Startzeit_Giessen > Giessdauer){
     Wasser aus;
}

Du merkst dir beim Einschalten des Wassers die Zeit. Bevor nicht mindestens [Giessperiode]ms vorbei sind, kann nicht wieder eingeschalten werden. Und aussedem fragst du nach Giessdauer ab, zum abschalten der Ventile.