Hi , ich steh gerade auf dem Schlauch und komme nicht weiter.
Mein Problem: ich möchte eine Pumpe einschalten und mach ca.2 Minuten wieder ausschalten.
Mein Problem, ich kann nur millis mit Interval (also Blinking LED) aber das möchte ich nicht. Ich komm nicht drauf, wo die aktulle Zeit gespeichert werden soll, also in welchem Teil vom Code.
Wenn altMillis die Zeit hat und ich komm erst in 1h wieder an die abfrage, dann ist die differenz immer größer und die Pumpe geht wieder aus.
Ich hatte es schon mal hin bekommen, aber ich weiß nicht mehr wie.
Es ist nur ein Auszug vom Code und es geht mir nur darum, wie ich High -> zeit-> Low hinbekomme.
Hilfe
MfG Marco
void blumenkasten()
{
static int Blumengiesen = 0;
static int AltBlumengiesen = 0;
static int AltBoden_Data = 0;
static unsigned long aktMillis = 0;
static unsigned long altMillis = 0;
static unsigned long GiessZeit = 2000; // gieszeit �ndern
if (Boden_Data != AltBoden_Data)
{
if (Boden_Data == 0)
{
Blumengiesen = 0; // nicht giesen
}
if (Boden_Data == 1)
{
Blumengiesen = 1; //giesen
}
}
AltBoden_Data = Boden_Data;
if ((Blumengiesen == 1) && (wc_Wert == 1) && (reedSensor_wert == 1))//Blumen trocken-> Blumengiesen = 1 ; wc_Wert ->Sp�lkasten Voll = 1 ; reedSensor Regenfa� voll = 1;
{
BereitZumGiesen = 1; // giesen wasserbedarf
}
else
{
BereitZumGiesen = 0; // irgend eine St�rung oder kein Wasser oder Wc
}
if (blume_MAG == HIGH) // wenn Pumpen_Pin High ist, dann merke dir die Zeit
{
//millis() z�hlt von anfang an
//hier in eine Variable schreiben bringt nichts
if (millis() - altMillis >= GiesZeit) // wenn 1 Minute High war, dann schalte Pumpen_Pin auf Low
{ // bis irgendwann Pumpen_Pin wieder High ist
BereitZumGiesen = 0;
altMillis = millis();
// komme ich noch 10 Minuten wieder in diese Funktion, dann ist Gieszeit immer gr��er und der Pin wird wieder Low
}
}
}
michael_x:
agmues Beispiel sollte sogar ohne Entprellen gehen:
Ich liebe feine Ironie. Da wäre das Prellen ja mal richtig nützlich
Da die meisten Fragesteller "gedrückter Taster = HIGH" denken, werte ich INPUT_PULLUP zum Trotz die steigende Flanke aus. Meine Taster liegen irgendwo in der Starterpaket-Grabbelbox, daher ziehe ich ein Kabel aus dem Steckbrett und vice versa. Funktioniert prima
Das Bewässerungsprogramm wird vom TO nur fragmentarisch gezeigt, daher vermute ich, es geht nicht um ein Tastersignal, sondern um ein Flag. Und Flags müssen normalerweise nicht entprellt werden.
Sollte der TO doch einen entprellten Taster benötigen, gibt es ja auch Kondensatoren, bounce-Bibliothek und oder ein kleines delay(30).