Guten Tag,
bin gerade dabei eine Ein- und Ausschaltverzögerung zu programmieren. Bin noch blutiger Anfänger und versuche mich mit Google irgenwie ans Ziel zu hangeln. Leider bin ich an einem Punkt wo ich nicht mehr weiter komme und hoffe hier vielleicht etwas Hilfe zu bekommen.
Wenn der Sensor Strom bekommt (man könnte ihn auch einfach durch einen Schalter ersetzen, nur in der Realität ist es bei mir ein Stromsensor) soll mit einer Verzögerung von x Sekunden (im Beispiel 3 Sekunden) das Relais schalten und sobald der Sensor kein Strom mehr hat das Reläis mit einer Verzögerung von x Sekunden (im Beispiel 5 Sekunden) wieder ausschalten.
Der Code wie er unten steht funktionier auch genau so wie ich es möchte ABER
-
Macht er das nicht zuverlässig, manchmal überspringt er die Einschaltverzögerung, warum?
-
Würde ich den Code gerne mit 1-2 weiteren Sensoren und Relais erweitern, dies ist mir warum auch immer auch nicht gelungen. Am Ende hat immer gar nichts mehr funktioniert.
int sensor = 4;
int relais = 5;
unsigned long lastMillis1;
unsigned long lastMillis2;
void setup() {
pinMode (sensor, INPUT_PULLUP);
pinMode (relais, OUTPUT);
lastMillis2 = millis();
lastMillis1 = millis();
digitalWrite(relais, HIGH);
}
void loop() {
if (digitalRead(sensor) == LOW){
// Einschaltverzögerung
if ((millis() - lastMillis1) >= 3000) {
digitalWrite(relais, LOW);
lastMillis1 = millis();
}
}
if (!digitalRead(sensor)) {
lastMillis2 = millis();
}
if(digitalRead(sensor) == HIGH){
//Ausschaltverzögerung
if ((millis() - lastMillis2) >= 5000) {
digitalWrite(relais, HIGH);
}
}
}
Vielen vielen Dank schon mal für jede Antwort!
Ich wünsche euch allen frohe Osterfeiertage.
Viele Grüße
Frank