initial commit
This commit is contained in:
commit
8ed02d8cb2
|
@ -0,0 +1,70 @@
|
|||
import pifacedigitalio
|
||||
import time
|
||||
|
||||
button_count = 8
|
||||
longpress_delay = 0.4
|
||||
verylongpress_delay = 2
|
||||
shortpress_count_max_delay = 0.5
|
||||
inter_press_max_delay = 1
|
||||
pin_last_rise_date = [0]*button_count
|
||||
pin_last_shortpress = [0]*button_count
|
||||
pin_shortpress_count = [0]*button_count
|
||||
pifacedigital = pifacedigitalio.PiFaceDigital()
|
||||
|
||||
def switch_pressed(event):
|
||||
pin_last_rise_date[event.pin_num] = 0
|
||||
time.sleep(0.02)
|
||||
if pifacedigitalio.digital_read(event.pin_num) != 0:
|
||||
pin_last_rise_date[event.pin_num] = time.time()
|
||||
|
||||
def switch_unpressed(event):
|
||||
if pin_last_rise_date[event.pin_num] != 0:
|
||||
press_time = time.time() - pin_last_rise_date[event.pin_num]
|
||||
if press_time < longpress_delay:
|
||||
switch_shortpressed(event)
|
||||
elif longpress_delay <= press_time and press_time < verylongpress_delay:
|
||||
switch_longpressed(event)
|
||||
else:
|
||||
switch_verylongpressed(event)
|
||||
pin_last_rise_date[event.pin_num] = 0
|
||||
|
||||
def switch_longpressed(event):
|
||||
shortpress_delay = pin_last_rise_date[event.pin_num] - pin_last_shortpress[event.pin_num]
|
||||
if shortpress_delay > inter_press_max_delay:
|
||||
pin_shortpress_count[event.pin_num] = 0
|
||||
elif pin_shortpress_count[event.pin_num] == 1:
|
||||
event.chip.output_pins[event.pin_num].toggle()
|
||||
elif pin_shortpress_count[event.pin_num] == 2:
|
||||
for i in range(button_count):
|
||||
event.chip.output_pins[i].turn_on()
|
||||
|
||||
def switch_verylongpressed(event):
|
||||
shortpress_delay = pin_last_rise_date[event.pin_num] - pin_last_shortpress[event.pin_num]
|
||||
if shortpress_delay > inter_press_max_delay:
|
||||
pin_shortpress_count[event.pin_num] = 0
|
||||
for i in range(button_count):
|
||||
event.chip.output_pins[i].turn_off()
|
||||
elif pin_shortpress_count[event.pin_num] == 1:
|
||||
for i in range(button_count):
|
||||
event.chip.output_pins[i].turn_on()
|
||||
|
||||
def switch_shortpressed(event):
|
||||
now = time.time()
|
||||
if pin_shortpress_count[event.pin_num] == 0:
|
||||
pin_last_shortpress[event.pin_num] = now
|
||||
shortpress_delay = now - pin_last_shortpress[event.pin_num]
|
||||
print(shortpress_delay)
|
||||
if shortpress_delay > shortpress_count_max_delay:
|
||||
pin_shortpress_count[event.pin_num] = 1
|
||||
else:
|
||||
pin_shortpress_count[event.pin_num] += 1
|
||||
pin_last_shortpress[event.pin_num] = now
|
||||
print(["count:", pin_shortpress_count[event.pin_num]])
|
||||
|
||||
if __name__ == "__main__":
|
||||
pifacedigitalio.init()
|
||||
listener = pifacedigitalio.InputEventListener(chip=pifacedigital)
|
||||
for i in range(button_count):
|
||||
listener.register(i, pifacedigitalio.IODIR_ON, switch_pressed)
|
||||
listener.register(i, pifacedigitalio.IODIR_OFF, switch_unpressed)
|
||||
listener.activate()
|
Loading…
Reference in New Issue