Hallo liebes Forum,
ich habe an einem AtMega8 einen selbstgebauten Touchschalter angebracht, als Ersatz für einen normalen Taster.
Dieser Schalter ist ziemlich sensibel, manchmal reagiert er auch wenn man in etwas weiterm Abstand an dem Schalter vorbei greift.
Ich habe mir als Lösung des Problems überlegt, dass es, um als eindeutig gewolltes Schalten gewertet werden zu können, nötig ist dass der Schalter drei Sekunden ausgelöst wird.
Ich könnte jetzt natürlich nach dem ersten Schaltsignal ein wait() einbauen und danach nochmal testen ob der Eingang immer noch geschaltet ist aber dadurch könnte ich nicht feststellen ob es nicht zufällig so ist, dass wieder ein Signal anliegt.
Ich muss also ein unterbrechungsfreies Berühren detektieren.
Meine Idee war jetzt ab dem ersten Detektieren einer vermeintlichen Berührung eine Variable bei jedem Durchlaufen der Hauptschleife um 1 hochzuzählen.
Sobald kein Signal mehr anliegt wird die Variable wieder auf 0 gesetzt.
Wenn jedoch bis zu einem gewissen Schwellwert gezählt wird dann gilt es als beabsichtigtes Schalten.
pseudocode:
Code:
zaehler = 0
while
if schalter == 1 then
zaehler ++
else zaehler = 0
if zaehler > schwelle
.......
endwhile
was haltet ihr davon?
Gibt es eine bessere Möglichkeit?
danke für eure Ideen!
Crypi
Lesezeichen