Eine Verzögerung ohne delay

Hallo,
ich benutze den Entfernungsmesser VL6180X und im COM3 funktioniert er auch sehr gut. Nun soll er ein LED anschalten, nachdem der Abstand unter 60mm ist. Das geht auch, jedoch versuche ich heraus zu finden, wie man quasi einen 'Timer' einbaut, der die LED erst aktiviert, solang der Wert z.B 5 sekunden lang unter 60mm war. Selbst wenn er nach 2 sekunden wieder auf 61mm war soll der Timer unterbrechen. Nur bei konstanten 5 sek soll er auslösen.
Kann mir da wer weiter helfen?

Screenshot 2023-03-21 195731

Dann schau dir doch mal "BlinkWithoutDelay" in den Beispielen der IDE an.
Das an ddeine Anforderungen angepasst und es funktioniert.

vielen Dank für den Tipp.
Da ich Anfänger bin würde es mich freuen, wenn einer schnell diese paar Zeilen für mich trotzdem schreiben könnte :slight_smile:
Liebe Grüße

Ok, da kommt sicher noch jemand vorbei, nur wie willst du etwas lernen, wenn es andere für dich machen ?

merk dir in einer Variable die Zeit (millis) wenn das Kritierum erfüllt ist.
in einem zweiten if kontrollierst du, ob die gemerkte zeit > 5 Sekunden ist.
Dann schaltest du eine LED ein.
Wenn der Abstand kleiner ist, setzt du dein System wieder zurück.

Deinen Code kann man nicht anpassen, da die Arduino IDE kein Bild importieren und somit auch nicht wiederverwenden kann. Musst du also selber schreiben.

1 Like

wenn Abstand > 60 mm speichere aktuelle Zeit
ZeitStempelAbstandGroß = millis()
dieses Zeitstempel speichern wird ständig wiederholt so lange
Abstand > 60 mm ist
Folge: der Zeitstempel wird ständig aktualisiert.
Die Differenz aktuellerZeit - ZeitStempelAbstandGroß bleibt 0

Wenn der Abstand == oder < 60 ist, dann wird der Zeitstempel nicht mehr aktualisiert.

Man berechnet die Differenz zwischen aktuellerZeit - ZeitStempelAbstandGroß
wenn diese Differenz größer 5000 Millisekunden ist dann
action!

aktuelle Zeit 7130 ms Abstand 65 mm ZeitStempelAbstandGroß = 7130 Differenz = 0

aktuelle Zeit 7131 ms Abstand 63 mm ZeitStempelAbstandGroß = 7131 Differenz = 0

aktuelle Zeit 7132 ms Abstand 64 mm ZeitStempelAbstandGroß = 7132 Differenz = 0

aktuelle Zeit 7133 ms Abstand 58 mm ZeitStempelAbstandGroß bleibt bei 7132 Differenz = 1
....
aktuelle Zeit 7140 ms Abstand 54 mm ZeitStempelAbstandGroß bleibt bei 7132 Differenz = 8
... ... ... ...
aktuelle Zeit 12132 ms Abstand 54 mm ZeitStempelAbstandGroß bleibt bei 7132 Differenz = 5000
action !
vgs

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.