Hey Leute bin recht neu im Arduino Feld tätig und habe ein Problem.
Ich habe einen Radarsensor, welcher ein Display einschaltet, falls etwas näher als 1m kommt. Falls sich die Person/Gegenstand wieder entfernt soll das Display aber noch 5 sekunden anbleiben.
Weiß jemand wie man das Lösen kann?
Dabei möchte ich kein DELAY verwenden.
Auch wenn Serenfly mal wieder wie jurs auch, das fast fertige Skript einen vor die Füsse wirft.
Warum schaust du dir nicht einfach mal das Beispiel "BlinkWithoutDelay" an. Dort wird bereits gezeigt, wie das ganze funktioniert! Das gehört zu den Basics dazu und sollte auf jedenfall verstanden werden.
Die Logik für dein Problem ist dann doch recht trivial.
Sensor wechselt von 0 nach 1 (pos. Flanke). -> Display AN
Sensor wechselt von 1 nach 0 (neg. Flanke) -> Merker für Display AUS setzen, lastMillis = millis();
Wenn Merker Display Aus 1 ist, abfragen wann die Zeit abgelaufen ist. Dann Display ausschalten und Merker zurücksetzen,
Miko1992:
Hey Leute bin recht neu im Arduino Feld tätig und habe ein Problem.
Ich habe einen Radarsensor, welcher ein Display einschaltet, falls etwas näher als 1m kommt. Falls sich die Person/Gegenstand wieder entfernt soll das Display aber noch 5 sekunden anbleiben.
Weiß jemand wie man das Lösen kann?
Üblicherweise löst man so etwas einfach mit einer Hysterese in der Abstandsmessung.
Pseudocode:
void loop()
{
abstand= abstandMessen();
if (abstand<100) einschalten();
else if (abstand>150) ausschalten();
}
Dann würde eingeschaltet, wenn sich jemand auf weniger als 1m nährt.
Es wird ausgeschaltet, wenn sich die Person mehr als 1,50m entfernt hat.
Und in allen anderen Fällen dazwischen wird stets der letzte Schaltzustand beibehalten.
D.h. Du hast nicht einen einzigen "Schaltpunkt", an dem geschaltet wird, sondern Du hast zwei Schaltpunkte, die mehr oder weniger weit auseinanderliegen: Einen "Einschaltpunkt" und einen "Ausschaltpunkt".