stepper-clock/Button.py
2020-03-18 20:37:21 +01:00

30 lines
1.1 KiB
Python

import machine
import time
class Button():
def __init__(self,pin,onPushDown = None, onPushUp = None,debounceTimeMs = 50,inputMode = machine.Pin.IN,inverted = False):
self.pin = machine.Pin(pin,inputMode)
self.pressedTime = -debounceTimeMs
self.debounceTimeMs = int(debounceTimeMs)
self.onPushDown = onPushDown
self.onPushUp = onPushUp
self.pin.irq(trigger=machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING , handler=self._IRQ)
self.value = self.pin.value()
self.inverted = inverted
def _IRQ(self,p):
new_value = self.pin.value()
if (self.value != new_value):
self.value = new_value
time_ms = time.ticks_ms()
if ((self.pressedTime+self.debounceTimeMs) < time_ms):
self.pressedTime = time_ms
if (new_value ^ self.inverted):
if (self.onPushUp != None):
self.onPushUp()
else:
if (self.onPushDown != None):
self.onPushDown()
else:
pass