add keypad scanner for shift registers

This commit is contained in:
xs5871 authored and Kyle Brown committed 2022-04-12 08:29:23 -07:00
1 parent b3ec37e274
commit d2e87b3e70
2 files changed
+51

No files matched your search

+25
View File
@@ -74,6 +74,31 @@ class MyKeyboard(KMKKeyboard):
```
### keypad ShiftRegisterKeys
This scanner can read keys attached to a parallel-in serial-out shift register
like the 74HC165 or CD4021. Note that you may chain shift registers to load in
as many values as you need.
```python
from kmk.scanners.keypad import ShiftRegisterKeys
class MyKeyboard(KMKKeyboard):
def __init__(self):
# create and register the scanner
self.matrix = ShiftRegisterKeys(
# require arguments:
clock=board.GP0,
data=board.GP1,
latch=board.GP2,
key_count=8,
# optional arguments with defaults:
value_to_latch=True, # 74HC165: True, CD4021: False
value_when_pressed=False,
interval=0.02,
max_events=64
)
```
## Digitalio Scanners
### digitalio MatrixScanner
+26
View File
@@ -88,3 +88,29 @@ class KeysScanner(KeypadScanner):
max_events=max_events,
)
super().__init__()
class ShiftRegisterKeys(KeypadScanner):
def __init__(
self,
*,
clock,
data,
latch,
value_to_latch=True,
key_count,
value_when_pressed=False,
interval=0.02,
max_events=64,
):
self.keypad = keypad.ShiftRegisterKeys(
clock=clock,
data=data,
latch=latch,
value_to_latch=value_to_latch,
key_count=key_count,
value_when_pressed=value_when_pressed,
interval=interval,
max_events=max_events,
)
super().__init__()