Irgendwie sehe ich gerade den Wald vor lauter Bäumen nicht.
Ich will an sich was recht einfaches programmieren:
Ich drücke einen Taster, Pumpe soll 30 Sek. pumpen. Drücke ich innerhalb dieser Zeit nochmals, soll sie ausgehen.
Ich brauche die Funktion naturlich in einem grösseren Programm, hier de relevante Code:
Anschalten soll Pi36 wenn subir_nivelState HIGH ist. Die Variable wird in einem anderenprogrammteil gesetzt. Die Abschaltung nach 30 Sek. geht, nur den Abbruch krieg ich nicht hin.
static long subirNivelTime;
if (subir_nivelState && !subir_nivelAusgangState) //sperren gegen mehrfachaufrufe, geht
{
subirNivelTime=millis();
subir_nivelAusgangState=1;
subir_nivelState=0;
digitalWrite(36, HIGH); // Pumpe anschalten
Serial.println("Pumpe starten");
}
if (millis()-subirNivelTime > 30000 && subir_nivelAusgangState) // Dauer des Hochpumpens, geht
{
digitalWrite(36, LOW); // Pumpe abschalten
subir_nivelAusgangState=0;
subir_nivelLastState=0;
Serial.println("Hochpumpzeit vorbei");
}
if (subir_nivelAusgangState && subir_nivelState && !filterspueltzurueck) // das soll die Abbruchroutine werden, geht NICHT
{
digitalWrite(36, LOW); // Pumpe abschalten
subir_nivelAusgangState=0;
Serial.println("Hochpumpen abgebrochen");
}
Wer kann mir da mal auf die Sprünge helfen?