10
10
import displayio
11
11
import digitalio
12
12
import neopixel
13
- from gamepadshift import GamePadShift
13
+ from keypad import ShiftRegisterKeys , Event
14
14
from adafruit_display_shapes .rect import Rect
15
15
from adafruit_display_text .label import Label
16
16
from adafruit_bitmap_font import bitmap_font
17
17
18
18
# Button Constants
19
- BUTTON_LEFT = const (128 )
20
- BUTTON_UP = const (64 )
21
- BUTTON_DOWN = const (32 )
22
- BUTTON_RIGHT = const (16 )
23
- BUTTON_SEL = const (8 )
24
- BUTTON_START = const (4 )
25
- BUTTON_A = const (2 )
26
- BUTTON_B = const (1 )
19
+ BUTTON_LEFT = const (7 )
20
+ BUTTON_UP = const (6 )
21
+ BUTTON_DOWN = const (5 )
22
+ BUTTON_RIGHT = const (4 )
23
+ BUTTON_SEL = const (3 )
24
+ BUTTON_START = const (2 )
25
+ BUTTON_A = const (1 )
26
+ BUTTON_B = const (0 )
27
27
28
28
# Customizations
29
29
HELLO_STRING = "HELLO"
45
45
neopixels = neopixel .NeoPixel (board .NEOPIXEL , NEOPIXEL_COUNT , brightness = brightness ,
46
46
auto_write = False , pixel_order = neopixel .GRB )
47
47
48
- pad = GamePadShift (digitalio .DigitalInOut (board .BUTTON_CLOCK ),
49
- digitalio .DigitalInOut (board .BUTTON_OUT ),
50
- digitalio .DigitalInOut (board .BUTTON_LATCH ))
48
+ latest_event = Event ()
49
+ last_press = None
50
+
51
+ pad = ShiftRegisterKeys (clock = board .BUTTON_CLOCK ,
52
+ data = board .BUTTON_OUT ,
53
+ latch = board .BUTTON_LATCH ,
54
+ key_count = 8 ,
55
+ value_when_pressed = True ,
56
+ max_events = 1 )
51
57
52
58
# Make the Display Background
53
59
splash = displayio .Group ()
@@ -131,7 +137,6 @@ def rotate(degrees):
131
137
pixels .append (x * 360 // NEOPIXEL_COUNT )
132
138
133
139
# Main Loop
134
- current_buttons = pad .get_pressed ()
135
140
last_read = 0
136
141
while True :
137
142
for color in range (0 , 360 , speed ):
@@ -146,20 +151,24 @@ def rotate(degrees):
146
151
neopixels .brightness = brightness
147
152
# Reading buttons too fast returns 0
148
153
if (last_read + 0.1 ) < time .monotonic ():
149
- buttons = pad .get_pressed ( )
154
+ pad .events . get_into ( latest_event )
150
155
last_read = time .monotonic ()
151
- if current_buttons != buttons :
156
+ #print()
157
+ #print("latest keynumber:", latest_event.key_number)
158
+ if latest_event is not None and latest_event .key_number != last_press :
152
159
# Respond to the buttons
153
- if (buttons & BUTTON_RIGHT ) > 0 :
160
+ if (latest_event . key_number == BUTTON_RIGHT ):
154
161
direction = - 1
155
- elif (buttons & BUTTON_LEFT ) > 0 :
162
+ elif (latest_event . key_number == BUTTON_LEFT ):
156
163
direction = 1
157
- elif (buttons & BUTTON_UP ) > 0 and speed < 10 :
164
+ elif (latest_event . key_number == BUTTON_UP ) and speed < 10 :
158
165
speed += 1
159
- elif (buttons & BUTTON_DOWN ) > 0 and speed > 1 :
166
+ elif (latest_event . key_number == BUTTON_DOWN ) and speed > 1 :
160
167
speed -= 1
161
- elif (buttons & BUTTON_A ) > 0 and brightness < 0.5 :
168
+ elif (latest_event . key_number == BUTTON_A ) and brightness < 0.5 :
162
169
brightness += 0.025
163
- elif (buttons & BUTTON_B ) > 0 and brightness > 0.025 :
170
+ elif (latest_event . key_number == BUTTON_B ) and brightness > 0.025 :
164
171
brightness -= 0.025
165
- current_buttons = buttons
172
+ last_press = latest_event .key_number
173
+ else :
174
+ last_press = None
0 commit comments