diff --git a/micropython/modules_py/inky_frame.py b/micropython/modules_py/inky_frame.py new file mode 100644 index 00000000..83e6cfa7 --- /dev/null +++ b/micropython/modules_py/inky_frame.py @@ -0,0 +1,49 @@ +from pimoroni import ShiftRegister +from machine import Pin +import time + + +SR_CLOCK = 8 +SR_LATCH = 9 +SR_OUT = 10 + +LED_A = 11 +LED_B = 12 +LED_C = 13 +LED_D = 14 +LED_E = 15 + + +class Button: + def __init__(self, sr, idx, led, debounce=50): + self.sr = sr + self.led = Pin(led, Pin.OUT) # LEDs are just regular IOs + self.led.off() + self._idx = idx + self._debounce_time = debounce + self._changed = time.ticks_ms() + self._last_value = None + + def read(self): + value = self.raw() + if value != self._last_value and time.ticks_ms() - self._changed > self._debounce_time: + self._last_value = value + self._changed = time.ticks_ms() + return value + return False + + def raw(self): + return self.sr[self._idx] == 1 + + @property + def is_pressed(self): + return self.raw() + + +sr = ShiftRegister(SR_CLOCK, SR_LATCH, SR_OUT) + +button_a = Button(sr, 7, LED_A) +button_b = Button(sr, 6, LED_B) +button_c = Button(sr, 5, LED_C) +button_d = Button(sr, 4, LED_D) +button_e = Button(sr, 3, LED_E) diff --git a/micropython/modules_py/modules_py.cmake b/micropython/modules_py/modules_py.cmake index 11cf0d01..ef0a9644 100644 --- a/micropython/modules_py/modules_py.cmake +++ b/micropython/modules_py/modules_py.cmake @@ -23,4 +23,5 @@ copy_module(usermod_modules_py ${CMAKE_CURRENT_LIST_DIR}/interstate75.py interst if(PICO_BOARD STREQUAL "pico_w") copy_module(usermod_modules_py ${CMAKE_CURRENT_LIST_DIR}/automation.py automation) copy_module(usermod_modules_py ${CMAKE_CURRENT_LIST_DIR}/inventor.py inventor) + copy_module(usermod_modules_py ${CMAKE_CURRENT_LIST_DIR}/inky_frame.py inky_frame) endif() \ No newline at end of file