diff --git a/Keypad_Examples/comparing_events/code.py b/Keypad_Examples/comparing_events/code.py new file mode 100644 index 000000000..3d2188e66 --- /dev/null +++ b/Keypad_Examples/comparing_events/code.py @@ -0,0 +1,30 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import board + +from keypad import Keys, Event + +keys = Keys((board.D8, board.D9, board.D10), value_when_pressed=False, pull=True) + +LEFT_EVENT = Event(0, True) # Button 0 (D8) pressed +RIGHT_EVENT = Event(1, True) # Button 1 (D9) pressed +STOP_EVENT = Event(2, True) # Button 2 (D10) pressed + +DIRECTION = { + LEFT_EVENT: "LEFT", + RIGHT_EVENT: "RIGHT", +} + +while True: + event = keys.events.get() + if event: + if event == STOP_EVENT: + print("stop") + break + + # Look up the event. If not found, direction is None. + direction = DIRECTION.get(event) + if direction: + print(direction) diff --git a/Keypad_Examples/keymatrix/code.py b/Keypad_Examples/keymatrix/code.py new file mode 100644 index 000000000..b91c392c4 --- /dev/null +++ b/Keypad_Examples/keymatrix/code.py @@ -0,0 +1,16 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +km = keypad.KeyMatrix( + row_pins=(board.A0, board.A1, board.A2, board.A3), + column_pins=(board.D0, board.D1, board.D2), +) + +while True: + event = km.events.get() + if event: + print(event) diff --git a/Keypad_Examples/keymatrix_columns_to_anodes/code.py b/Keypad_Examples/keymatrix_columns_to_anodes/code.py new file mode 100644 index 000000000..463c7431a --- /dev/null +++ b/Keypad_Examples/keymatrix_columns_to_anodes/code.py @@ -0,0 +1,17 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +km = keypad.KeyMatrix( + row_pins=(board.D0, board.D1, board.D2, board.D3), + column_pins=(board.D4, board.D5, board.D6), + columns_to_anodes=True, +) + +while True: + event = km.events.get() + if event: + print(event) diff --git a/Keypad_Examples/longer_interval/code.py b/Keypad_Examples/longer_interval/code.py new file mode 100644 index 000000000..58241aebd --- /dev/null +++ b/Keypad_Examples/longer_interval/code.py @@ -0,0 +1,18 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +km = keypad.KeyMatrix( + row_pins=(board.A0, board.A1, board.A2, board.A3), + column_pins=(board.D0, board.D1, board.D2), + # Allow 50 msecs to debounce. + interval=0.050, +) + +while True: + event = km.events.get() + if event: + print(event) diff --git a/Keypad_Examples/macropad_hid/code.py b/Keypad_Examples/macropad_hid/code.py new file mode 100644 index 000000000..0cbcda5c2 --- /dev/null +++ b/Keypad_Examples/macropad_hid/code.py @@ -0,0 +1,41 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import board +import keypad +import neopixel + +KEY_PINS = ( + board.KEY1, + board.KEY2, + board.KEY3, + board.KEY4, + board.KEY5, + board.KEY6, + board.KEY7, + board.KEY8, + board.KEY9, + board.KEY10, + board.KEY11, + board.KEY12, +) + +keys = keypad.Keys(KEY_PINS, value_when_pressed=False, pull=True) + +neopixels = neopixel.NeoPixel(board.NEOPIXEL, 12, brightness=0.4) + +while True: + event = keys.events.get() + if event: + # A key transition occurred. + print(event) + + if event.pressed: + # Turn the key blue when pressed + neopixels[event.key_number] = (0, 0, 255) + + # This could just be `else:`, + # since event.pressed and event.released are opposites. + if event.released: + neopixels[event.key_number] = (0, 0, 0) diff --git a/Keypad_Examples/max_events/code.py b/Keypad_Examples/max_events/code.py new file mode 100644 index 000000000..d58949a17 --- /dev/null +++ b/Keypad_Examples/max_events/code.py @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +k = keypad.Keys( + (board.D8, board.D9), + value_when_pressed=False, + pull=True, + # Increase event queue size to 128 events. + max_events=128, +) + +while True: + event = k.events.get() + if event: + print(event) diff --git a/Keypad_Examples/one_button/code.py b/Keypad_Examples/one_button/code.py new file mode 100644 index 000000000..ef5962e85 --- /dev/null +++ b/Keypad_Examples/one_button/code.py @@ -0,0 +1,14 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import board +import keypad + +keys = keypad.Keys((board.D5,), value_when_pressed=False, pull=True) + +while True: + event = keys.events.get() + # event will be None if nothing has happened. + if event: + print(event) diff --git a/Keypad_Examples/overflow/code.py b/Keypad_Examples/overflow/code.py new file mode 100644 index 000000000..72e7a249b --- /dev/null +++ b/Keypad_Examples/overflow/code.py @@ -0,0 +1,22 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +k = keypad.Keys( + (board.D8, board.D9), + value_when_pressed=False, + pull=True, +) + +while True: + # Check if we lost some events. + if k.events.overflowed: + k.events.clear() # Empty the event queue. + k.reset() # Forget any existing presses. Start over. + + event = k.events.get() + if event: + print(event) diff --git a/Keypad_Examples/reuse_event/code.py b/Keypad_Examples/reuse_event/code.py new file mode 100644 index 000000000..8bc3e0589 --- /dev/null +++ b/Keypad_Examples/reuse_event/code.py @@ -0,0 +1,15 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import board +import keypad + +keys = keypad.Keys((board.D8,), value_when_pressed=False, pull=True) + +# Create an event we will reuse over and over. +event = keypad.Event() + +while True: + if keys.events.get_into(event): + print(event) diff --git a/Keypad_Examples/shift_register_keys/code.py b/Keypad_Examples/shift_register_keys/code.py new file mode 100644 index 000000000..75c1d0383 --- /dev/null +++ b/Keypad_Examples/shift_register_keys/code.py @@ -0,0 +1,19 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +k = keypad.ShiftRegisterKeys( + clock=board.BUTTON_CLOCK, + data=board.BUTTON_OUT, + latch=board.BUTTON_LATCH, + key_count=8, + value_when_pressed=True, +) + +while True: + event = k.events.get() + if event: + print(event) diff --git a/Keypad_Examples/snes_controller/code.py b/Keypad_Examples/snes_controller/code.py new file mode 100644 index 000000000..1534fbaa5 --- /dev/null +++ b/Keypad_Examples/snes_controller/code.py @@ -0,0 +1,38 @@ +# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries +# +# SPDX-License-Identifier: MIT + +import keypad +import board + +SNES_KEY_NAMES = ( + "B", + "Y", + "SELECT", + "START", + "UP", + "DOWN", + "LEFT", + "RIGHT", + "A", + "X", + "L", + "R", +) + +shift_k = keypad.ShiftRegisterKeys( + clock=board.D5, + latch=board.D6, + value_to_latch=False, + data=board.D7, + key_count=12, + value_when_pressed=False, +) + +while True: + event = shift_k.events.get() + if event: + print( + SNES_KEY_NAMES[event.key_number], + "pressed" if event.pressed else "released", + )