für einen Raspi möchte ich, das ein Eingang mind. 40ms anliegen muss, um ihn zu übernehmen.
Das debounce löst ja gleich aus und sperrt danach .. was ich so nicht möchte
würde funktionieren, aber ist der Code zu kompliziert?
Zuerst muss ich prüfen ob der Eingang sich geändert hat
Dann muss ich prüfen ob die zeit mind. 40ms waren
Dann muss ich prüfen das die Funktion nur einmal schaltet, wenn der Eingang geschlossen bleibt
Code: Alles auswählen
def checkTriggers(self):
while True:
current = datetime.datetime.now().timestamp() * 1000
# wenn sich der Eingang ändert
sw1 = GPIO.input(Coop.PIN_SWITCH_1)
if (sw1 != Coop.PIN_SWITCH_1_PREV):
# Letzten Wert halten
Coop.PIN_SWITCH_1_PREV = sw1
Coop.PIN_SWITCH_1_LAST_TIMESTAMP = current
else:
if((sw1 == Coop.PIN_SWITCH_1_PREV) and (Coop.PIN_SWITCH_1_LAST_TIMESTAMP + Coop.TRESHOLD) < current):
# Wert nur einmal auslösen
if(Coop.PIN_SWITCH_1_BLOCK != sw1):
Coop.PIN_SWITCH_1_BLOCK = sw1
# Steigende Flanke
if(not sw1):
logger.info("Schalter rechts bei Tür gedrückt")
time.sleep(0.01)