54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
import time
|
|
import picokeypad as keypad
|
|
|
|
keypad.init()
|
|
keypad.set_brightness(1.0)
|
|
|
|
lit = 0
|
|
last_button_states = 0
|
|
colour_index = 0
|
|
|
|
NUM_PADS = keypad.get_num_pads()
|
|
while True:
|
|
button_states = keypad.get_button_states()
|
|
if last_button_states != button_states:
|
|
last_button_states = button_states
|
|
if button_states > 0:
|
|
if lit == 0xffff:
|
|
# all buttons are already lit, reset the test
|
|
lit = 0
|
|
colour_index += 1
|
|
if colour_index >= 6:
|
|
colour_index = 0
|
|
else:
|
|
button = 0
|
|
for find in range(0, NUM_PADS):
|
|
# check if this button is pressed and no other buttons are pressed
|
|
if button_states & 0x01 > 0:
|
|
if not (button_states & (~0x01)) > 0:
|
|
lit = lit | (1 << button)
|
|
break
|
|
button_states >>= 1
|
|
button += 1
|
|
|
|
for i in range(0, NUM_PADS):
|
|
if (lit >> i) & 0x01:
|
|
if colour_index == 0:
|
|
keypad.illuminate(i, 0x00, 0x20, 0x00)
|
|
elif colour_index == 1:
|
|
keypad.illuminate(i, 0x20, 0x20, 0x00)
|
|
elif colour_index == 2:
|
|
keypad.illuminate(i, 0x20, 0x00, 0x00)
|
|
elif colour_index == 3:
|
|
keypad.illuminate(i, 0x20, 0x00, 0x20)
|
|
elif colour_index == 4:
|
|
keypad.illuminate(i, 0x00, 0x00, 0x20)
|
|
elif colour_index == 5:
|
|
keypad.illuminate(i, 0x00, 0x20, 0x20)
|
|
else:
|
|
keypad.illuminate(i, 0x05, 0x05, 0x05)
|
|
|
|
keypad.update()
|
|
|
|
time.sleep(0.1)
|