Skip to content

Commit 0e6b959

Browse files
committed
Put Keypad guide examples in Learn repo
1 parent 0090edd commit 0e6b959

File tree

11 files changed

+249
-0
lines changed

11 files changed

+249
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import board
6+
7+
from keypad import Keys, Event
8+
9+
keys = Keys((board.D8, board.D9, board.D10), value_when_pressed=False, pull=True)
10+
11+
LEFT_EVENT = Event(0, True) # Button 0 (D8) pressed
12+
RIGHT_EVENT = Event(1, True) # Button 1 (D9) pressed
13+
STOP_EVENT = Event(2, True) # Button 2 (D10) pressed
14+
15+
DIRECTION = {
16+
LEFT_EVENT: "LEFT",
17+
RIGHT_EVENT: "RIGHT",
18+
}
19+
20+
while True:
21+
event = keys.events.get()
22+
if event:
23+
if event == STOP_EVENT:
24+
print("stop")
25+
break
26+
27+
# Look up the event. If not found, direction is None.
28+
direction = DIRECTION.get(event)
29+
if direction:
30+
print(direction)

Keypad_Examples/keymatrix/code.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
km = keypad.KeyMatrix(
9+
row_pins=(board.A0, board.A1, board.A2, board.A3),
10+
column_pins=(board.D0, board.D1, board.D2),
11+
)
12+
13+
while True:
14+
event = km.events.get()
15+
if event:
16+
print(event)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
km = keypad.KeyMatrix(
9+
row_pins=(board.D0, board.D1, board.D2, board.D3),
10+
column_pins=(board.D4, board.D5, board.D6),
11+
columns_to_anodes=True,
12+
)
13+
14+
while True:
15+
event = km.events.get()
16+
if event:
17+
print(event)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
km = keypad.KeyMatrix(
9+
row_pins=(board.A0, board.A1, board.A2, board.A3),
10+
column_pins=(board.D0, board.D1, board.D2),
11+
# Allow 50 msecs to debounce.
12+
interval=0.050,
13+
)
14+
15+
while True:
16+
event = km.events.get()
17+
if event:
18+
print(event)

Keypad_Examples/macropad_hid/code.py

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import board
6+
import keypad
7+
import neopixel
8+
9+
KEY_PINS = (
10+
board.KEY1,
11+
board.KEY2,
12+
board.KEY3,
13+
board.KEY4,
14+
board.KEY5,
15+
board.KEY6,
16+
board.KEY7,
17+
board.KEY8,
18+
board.KEY9,
19+
board.KEY10,
20+
board.KEY11,
21+
board.KEY12,
22+
)
23+
24+
keys = keypad.Keys(KEY_PINS, value_when_pressed=False, pull=True)
25+
26+
neopixels = neopixel.NeoPixel(board.NEOPIXEL, 12, brightness=0.4)
27+
28+
while True:
29+
event = keys.events.get()
30+
if event:
31+
# A key transition occurred.
32+
print(event)
33+
34+
if event.pressed:
35+
# Turn the key blue when pressed
36+
neopixels[event.key_number] = (0, 0, 255)
37+
38+
# This could just be `else:`,
39+
# since event.pressed and event.released are opposites.
40+
if event.released:
41+
neopixels[event.key_number] = (0, 0, 0)

Keypad_Examples/max_events/code.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
k = keypad.Keys(
9+
(board.D8, board.D9),
10+
value_when_pressed=False,
11+
pull=True,
12+
# Increase event queue size to 128 events.
13+
max_events=128,
14+
)
15+
16+
while True:
17+
event = k.events.get()
18+
if event:
19+
print(event)

Keypad_Examples/one_button/code.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import board
6+
import keypad
7+
8+
keys = keypad.Keys((board.D5,), value_when_pressed=False, pull=True)
9+
10+
while True:
11+
event = keys.events.get()
12+
# event will be None if nothing has happened.
13+
if event:
14+
print(event)

Keypad_Examples/overflow/code.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
k = keypad.Keys(
9+
(board.D8, board.D9),
10+
value_when_pressed=False,
11+
pull=True,
12+
)
13+
14+
while True:
15+
# Check if we lost some events.
16+
if k.events.overflowed:
17+
k.events.clear() # Empty the event queue.
18+
k.reset() # Forget any existing presses. Start over.
19+
20+
event = k.events.get()
21+
if event:
22+
print(event)

Keypad_Examples/reuse_event/code.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import board
6+
import keypad
7+
8+
keys = keypad.Keys((board.D8,), value_when_pressed=False, pull=True)
9+
10+
# Create an event we will reuse over and over.
11+
event = keypad.Event()
12+
13+
while True:
14+
if keys.events.get_into(event):
15+
print(event)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
k = keypad.ShiftRegisterKeys(
9+
clock=board.BUTTON_CLOCK,
10+
data=board.BUTTON_OUT,
11+
latch=board.BUTTON_LATCH,
12+
key_count=8,
13+
value_when_pressed=True,
14+
)
15+
16+
while True:
17+
event = k.events.get()
18+
if event:
19+
print(event)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# SPDX-FileCopyrightText: 2022 Dan Halbert for Adafruit Industries
2+
#
3+
# SPDX-License-Identifier: MIT
4+
5+
import keypad
6+
import board
7+
8+
SNES_KEY_NAMES = (
9+
"B",
10+
"Y",
11+
"SELECT",
12+
"START",
13+
"UP",
14+
"DOWN",
15+
"LEFT",
16+
"RIGHT",
17+
"A",
18+
"X",
19+
"L",
20+
"R",
21+
)
22+
23+
shift_k = keypad.ShiftRegisterKeys(
24+
clock=board.D5,
25+
latch=board.D6,
26+
value_to_latch=False,
27+
data=board.D7,
28+
key_count=12,
29+
value_when_pressed=False,
30+
)
31+
32+
while True:
33+
event = shift_k.events.get()
34+
if event:
35+
print(
36+
SNES_KEY_NAMES[event.key_number],
37+
"pressed" if event.pressed else "released",
38+
)

0 commit comments

Comments
 (0)