/
main.py
112 lines (93 loc) · 3.14 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import digitalio
import board
import usb_hid
import time
import rotaryio
from digitalio import DigitalInOut, Direction
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
from adafruit_hid.consumer_control import ConsumerControl
from adafruit_hid.consumer_control_code import ConsumerControlCode
print("== Pi Pico multifunction knob 1.0 =="), print("---Pico Pad Keyboard---")
# Rotary encoder 1
enc = rotaryio.IncrementalEncoder(board.GP0, board.GP1)
encSw = digitalio.DigitalInOut(board.GP7)
encSw.direction = digitalio.Direction.INPUT
encSw.pull = digitalio.Pull.UP
lastPosition = 0
# Rotary encoder 2
#enc2 = rotaryio.IncrementalEncoder(board.GP2, board.GP3)
#enc2Sw = digitalio.DigitalInOut(board.GP8)
#enc2Sw.direction = digitalio.Direction.INPUT
#enc2Sw.pull = digitalio.Pull.UP
# Rotary encoder 3
#enc3 = rotaryio.IncrementalEncoder(board.GP4, board.GP5)
#enc3Sw = digitalio.DigitalInOut(board.GP9)
#enc3Sw.direction = digitalio.Direction.INPUT
#enc3w.pull = digitalio.Pull.UP
# Rotary encoder 4
#enc4 = rotaryio.IncrementalEncoder(board.GP21, board.GP20)
#enc4Sw = digitalio.DigitalInOut(board.GP10)
#enc4Sw.direction = digitalio.Direction.INPUT
#enc4Sw.pull = digitalio.Pull.UP
# Media buttons
btnStop = digitalio.DigitalInOut(board.GP11)
btnStop.direction = digitalio.Direction.INPUT
btnStop.pull = digitalio.Pull.UP
btnPrev = digitalio.DigitalInOut(board.GP9)
btnPrev.direction = digitalio.Direction.INPUT
btnPrev.pull = digitalio.Pull.UP
btnPlay = digitalio.DigitalInOut(board.GP13)
btnPlay.direction = digitalio.Direction.INPUT
btnPlay.pull = digitalio.Pull.UP
btnNext = digitalio.DigitalInOut(board.GP14)
btnNext.direction = digitalio.Direction.INPUT
btnNext.pull = digitalio.Pull.UP
# builtin LED
led = digitalio.DigitalInOut(board.GP25)
led.direction = digitalio.Direction.OUTPUT
# USB device
consumer = ConsumerControl(usb_hid.devices)
keyboard = Keyboard(usb_hid.devices)
# button delay
dl = 0.2
# loop
while True:
# poll encoder position
position = enc.position
if position != lastPosition:
led.value = True
if lastPosition < position:
Keyboard(usb_hid.devices).send(0, Keycode.LEFT_ARROW)
else:
Keyboard(usb_hid.devices).send(0, Keycode.RIGHT_ARROW)
lastPosition = position
led.value = False
# poll encoder button
if encSw.value == 0:
keyboard.send(Keycode.CONTROL, Keycode.K)
led.value = True
time.sleep(dl)
led.value = False
# poll media buttons
if btnStop.value == 0:
Keyboard(usb_hid.devices).send(0, Keycode.A)
led.value = True
time.sleep(dl)
led.value = False
if btnPrev.value == 0:
Keyboard(usb_hid.devices).send(0, Keycode.B)
led.value = True
time.sleep(dl)
led.value = False
if btnPlay.value == 0:
Keyboard(usb_hid.devices).send(0, Keycode.C)
led.value = True
time.sleep(dl)
led.value = False
if btnNext.value == 0:
Keyboard(usb_hid.devices).send(0, Keycode.D)
led.value = True
time.sleep(dl)
led.value = False
time.sleep(0.1)