Wenn du kurze Impulse ignorieren willst, musst du die filtern. Da geht kein weg dran vorbei. Ich habe deine Frage diesbezueglich uebrigens missverstanden, ich dachte, das ist ein Problem fuer dich, und nicht ein gewuenschtes verhalten, das 10ms-Impulse ignoriert werden.
Natuerlich laesst sich das problemlos auch programmieren, allerdings kommen wir dann in die Wunderwelt der timer-programmierung, und da greifen die hier so salopp vorgestellten ansaetze nicht mehr.
Was stattdessen hilft ist entweder ein RC-Glied zu verbauen (ich bin da kein Experte, aber damit bekommt man ja einen Bandpass, und den kannst du so auslegen, das er eben Frequenzen nur unter zB 50 Hz durchlaesst).
Oder du versuchst mal das hier: https://gpiozero.readthedocs.io/en/stab ... nputdevice
gpiozero ist eh viel besser als das leider oft verwante RPI.GPIO.
Skript dauerhaft ausführen
Noch ein kleiner Nachtrag: wenn du damit klarkommst, dass du sowohl die steigende als auch die fallende Flanke beruecksichtigen kannst, dann ist das Problem milde einfacher. Dann kannst du dir bei steigender Flanke einfach einen Timestamp merken, und bei fallender die verflossene Zeit messen. Eine Verarbeitung findet dann nur statt, wenn genug Zeit vergangen ist.
Das heisst aber, das zB eine Klingel erst beim loslassen schellt.
Das heisst aber, das zB eine Klingel erst beim loslassen schellt.
Also ich verwende ja eh Schalter und keine Taster.
Desswegen soll ja nur was ausgeführt werden wenn der Status zB eine gewisse Zeit besteht.
Kannst du mir vielleicht ein Beispiel geben wie ich das (11.8. SmoothedInputDevice) einsetzen muss?
Desswegen soll ja nur was ausgeführt werden wenn der Status zB eine gewisse Zeit besteht.
Kannst du mir vielleicht ein Beispiel geben wie ich das (11.8. SmoothedInputDevice) einsetzen muss?
Oder ich hab grad noch eine andere Idee.
Wie kann ich abfragen ob eine steigende oder fallende Flanke erkannt wurde?
http://www.netzmafia.de/skripten/hardwa ... O_int.html
Im letzten Fall muss dann innerhalb der Callback-Funktion der entsprechende Port ausgelesen werden, um festzustellen, ob der Auslöser eine steigende Flanke (Port-Wert "1") oder eine fallende war (Port-Wert "0").
Leider steht da nicht wie man es auslesen kann.
Wie kann ich abfragen ob eine steigende oder fallende Flanke erkannt wurde?
http://www.netzmafia.de/skripten/hardwa ... O_int.html
Im letzten Fall muss dann innerhalb der Callback-Funktion der entsprechende Port ausgelesen werden, um festzustellen, ob der Auslöser eine steigende Flanke (Port-Wert "1") oder eine fallende war (Port-Wert "0").
Leider steht da nicht wie man es auslesen kann.
Ja hab ich wohl überlesen...
also es geht mit der Funktion measure().
Aber wie genau frage ich jetzt den Port daraus ab?
NACHTRAG:
OK habs kapiert...das hilft mir nicht weiter .
Ich dachte das vielleicht die Störung so kurz ist das im Programm eine LOW Flanke erkannt wird aber wenn er in die def springt ist der Zustand schon wieder High. Wär das möglich?
also es geht mit der Funktion measure().
Aber wie genau frage ich jetzt den Port daraus ab?
NACHTRAG:
OK habs kapiert...das hilft mir nicht weiter .
Ich dachte das vielleicht die Störung so kurz ist das im Programm eine LOW Flanke erkannt wird aber wenn er in die def springt ist der Zustand schon wieder High. Wär das möglich?
Ich bin mir nicht sicher was du meinst. Aber ich habe gerade geschaut: die eh beste GPIO-Bibliothek (ja, gpiozero ist schon deutlich besser als,was du benutzt, aber treotzdem...) ist pigpio. Und das kennt eine glitch_filter:
http://abyz.me.uk/rpi/pigpio/python.htm ... tch_filter
http://abyz.me.uk/rpi/pigpio/python.htm ... tch_filter