added onClick in Button
This commit is contained in:
parent
78de42a4e2
commit
e7c4577e28
18
Button.py
18
Button.py
@ -2,29 +2,35 @@ import machine
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
class Button():
|
class Button():
|
||||||
def __init__(self,pin,onPushDown = None, onPushUp = None,debounceTimeMs = 50,inputMode = machine.Pin.IN,inverted = False):
|
def __init__(self,pin,onPushDown = None, onPushUp = None,onClick = None,onHold = None,clickTime=300,debounceTimeMs = 50,inputMode = machine.Pin.IN,inverted = False):
|
||||||
self.pin = machine.Pin(pin,inputMode)
|
self.pin = machine.Pin(pin,inputMode)
|
||||||
self.pressedTime = -debounceTimeMs
|
self.debounceTimestamp = -debounceTimeMs
|
||||||
self.debounceTimeMs = int(debounceTimeMs)
|
self.debounceTimeMs = int(debounceTimeMs)
|
||||||
|
self.clickTime = clickTime
|
||||||
|
self.pushDownTimeStamp = -clickTime
|
||||||
self.onPushDown = onPushDown
|
self.onPushDown = onPushDown
|
||||||
self.onPushUp = onPushUp
|
self.onPushUp = onPushUp
|
||||||
|
self.onClick = onClick
|
||||||
|
self.onHold = onHold
|
||||||
self.pin.irq(trigger=machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING , handler=self._IRQ)
|
self.pin.irq(trigger=machine.Pin.IRQ_RISING|machine.Pin.IRQ_FALLING , handler=self._IRQ)
|
||||||
self.value = self.pin.value()
|
self.value = self.pin.value()
|
||||||
self.inverted = inverted
|
self.inverted = inverted
|
||||||
|
|
||||||
def _IRQ(self,p):
|
def _IRQ(self,p):
|
||||||
new_value = self.pin.value()
|
new_value = self.pin.value()
|
||||||
|
time_ms = time.ticks_ms()
|
||||||
if (self.value != new_value):
|
if (self.value != new_value):
|
||||||
self.value = new_value
|
self.value = new_value
|
||||||
time_ms = time.ticks_ms()
|
if ((self.debounceTimestamp+self.debounceTimeMs) < time_ms):
|
||||||
if ((self.pressedTime+self.debounceTimeMs) < time_ms):
|
self.debounceTimestamp = time_ms
|
||||||
self.pressedTime = time_ms
|
|
||||||
if (new_value ^ self.inverted):
|
if (new_value ^ self.inverted):
|
||||||
if (self.onPushUp != None):
|
if (self.onPushUp != None):
|
||||||
self.onPushUp()
|
self.onPushUp()
|
||||||
|
if (self.onClick != None and (self.pushDownTimeStamp + self.clickTime > time_ms)):
|
||||||
|
self.onClick()
|
||||||
else:
|
else:
|
||||||
if (self.onPushDown != None):
|
if (self.onPushDown != None):
|
||||||
self.onPushDown()
|
self.onPushDown()
|
||||||
|
self.pushDownTimeStamp = time_ms
|
||||||
else:
|
else:
|
||||||
pass
|
pass
|
||||||
|
|
@ -26,4 +26,5 @@ Pin (ESP32)| Function
|
|||||||
[DS3231 RTC](https://github.com/micropython-Chinese-Community/mpy-lib/tree/master/misc/DS3231)
|
[DS3231 RTC](https://github.com/micropython-Chinese-Community/mpy-lib/tree/master/misc/DS3231)
|
||||||
|
|
||||||
[NodeMCU-32S Pinout](https://www.shenzhen2u.com/NodeMCU-32S)
|
[NodeMCU-32S Pinout](https://www.shenzhen2u.com/NodeMCU-32S)
|
||||||
|
|
||||||
[ESP32 Usable Pins](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)
|
[ESP32 Usable Pins](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)
|
||||||
|
36
main.py
36
main.py
@ -20,21 +20,35 @@ stepperhour = StepperL298M.Stepper([12,27,26,25],inverted=True)
|
|||||||
clock = StepperClock.StepperClock(stepperhour,stepperminu)
|
clock = StepperClock.StepperClock(stepperhour,stepperminu)
|
||||||
|
|
||||||
|
|
||||||
LED = machine.Pin(32,machine.Pin.OUT)
|
leftButtonLED = machine.Pin(32,machine.Pin.OUT)
|
||||||
|
middleButtonLED = machine.Pin(33,machine.Pin.OUT)
|
||||||
|
rightButtonLED = machine.Pin(13,machine.Pin.OUT)
|
||||||
|
|
||||||
|
def leftButtonClickDown():
|
||||||
|
leftButtonLED.on()
|
||||||
|
def leftButtonClickUp():
|
||||||
|
leftButtonLED.off()
|
||||||
def leftButtonClick():
|
def leftButtonClick():
|
||||||
global i
|
stepperminu.stepnum = (stepperminu.stepnum+8)%stepperminu.stepsPerRev
|
||||||
print("Down",LED.value())
|
leftButton = Button.Button(pin=36,onPushDown=leftButtonClickDown,onPushUp=leftButtonClickUp,onClick=leftButtonClick,inverted=True)
|
||||||
LED.value(not LED.value())
|
|
||||||
stepperhour.rotateTo(stepperhour.getTarget()+0.1)
|
|
||||||
Button.Button(36,leftButtonClick,None,inverted=True)
|
|
||||||
|
|
||||||
|
def rightButtonClickDown():
|
||||||
|
rightButtonLED.on()
|
||||||
|
def rightButtonClickUp():
|
||||||
|
rightButtonLED.off()
|
||||||
def rightButtonClick():
|
def rightButtonClick():
|
||||||
global i
|
stepperhour.stepnum = (stepperhour.stepnum+8)%stepperhour.stepsPerRev
|
||||||
print("Down",LED.value())
|
rightButton = Button.Button(pin=34,onPushDown=rightButtonClickDown,onPushUp=rightButtonClickUp,onClick=rightButtonClick,inverted=True)
|
||||||
LED.value(not LED.value())
|
|
||||||
stepperhour.rotateTo(stepperhour.getTarget()-0.2)
|
def middleButtonClickDown():
|
||||||
Button.Button(34,rightButtonClick,None,inverted=True)
|
pass
|
||||||
|
def middleButtonClickUp():
|
||||||
|
pass
|
||||||
|
def middleButtonClick():
|
||||||
|
middleButtonLED.value(not middleButtonLED.value())
|
||||||
|
middleButton = Button.Button(pin=39,onPushDown=middleButtonClickDown,onPushUp=middleButtonClickUp,onClick=middleButtonClick,inverted=True)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
clock.start()
|
clock.start()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user