Hallo, ich bin gerade dabei für meine Bachelorarbeit einen Arduino-Code zu programmieren. Nun habe ich ein Problem mit der Kombination aus der attachInterrupt-Funktion und dem Debouncen.
Das Ziel ist über einen attachinterrupt eine Rising-Flank zu erkennen und dann eine Funktion zu starten. Das funktioniert auch super. Das Problem ist nun (wofür der Debounce ja auch gedacht ist), dass durch den unsauberen Input des Buttons diese Funktion auch beim Schalten von HIGH auf LOW ausgelöst wird und nicht nur wie gewollt beim Schalten von LOW auf HIGH. (Dies passiert einmal bei ersten Buttonpress und dann nochmal wenn man ihn z.B. eine Sekunde später wieder loslässt).
Mir ist aufgefallen, dass ich beim anfänglichen Hochschalten einen delay einbauen kann, welcher dann nach z.B. 50ms den Pin Status auf HIGH abfragt und so nur die Funktion auslöst, wenn das Signal dann passt, was den Fehler behebt. Leider ist dann dieser angesprochene Delay von 50 ms drin, was für meine Anwendung ungeeignet ist.
Gibt es eine Möglichkeit diesen delay zu umgehen oder mit einem anderen Trick das Problem zu beheben?
Ich bin für jede Hilfestellung oder Denkanstöße dankbar
Bitte gewöhne Dir an, auch mal einen Absatz einzufügen. Du schreibst keinen Roman, sondern eine Aufgabenstellung.
Ich empfehle mal eine ganz einfache kleine Funktion die ich grad vor zwei Tagen verbaut habe. Solltest Du ein debuonce brauchen, ist das relativ einfach im elsezweig zu lösen.
Fürn Bachelor mach mal und schreib das für Dich fertig.
Moin, sorry die Schreiblust überkam mich einfach ;), aber hast du recht. Die Funktion ist gut, habe auch so eine ähnliche geschrieben, aber weil noch vieles anderes im Code gemacht wird, arbeite ich glaube ich lieber mit der Library, damit es simpel bleibt. Danke für deine Hilfe
Hi, hatte ich versucht, leider erkannte er auch beim Ausschalten noch eine Rising-Flanke durch das "Zittern". Da lag das Problem, also das er die Funktion auch beim "Ausschalten" getriggert hat, aber hat sich nun geklärt. Danke für deine Mühen