Skip to content

Commit 86147bc

Browse files
authored
Merge pull request #2161 from jedgarpark/pinball
added pinball code
2 parents b2cf4c0 + 681da8b commit 86147bc

File tree

1 file changed

+75
-0
lines changed

1 file changed

+75
-0
lines changed

GemmaM0_Pinball/code.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
# SPDX-FileCopyrightText: 2022 john park & tod kurt for Adafruit Industries
2+
# SPDX-License-Identifier: MIT
3+
# Gemma IO demo - Keyboard emu
4+
# iCade Pinball Edition
5+
6+
import board
7+
from digitalio import DigitalInOut, Pull
8+
from adafruit_debouncer import Debouncer
9+
import usb_hid
10+
from adafruit_hid.keyboard import Keyboard
11+
from adafruit_hid.keycode import Keycode
12+
13+
# Allows three buttons on a Gemma M0 to control iCade standard Pinball Arcade
14+
# game on iOS using USB to Lightning "camera connector"
15+
16+
# iCade keyboard mappings
17+
# See developer doc at: http://www.ionaudio.com/products/details/icade
18+
19+
# WE YT UF IM OG
20+
# AQ< -->DC
21+
# XZ HR JN KP LV
22+
23+
#control key is triggered by a press, doesn't repeat, second control key is
24+
#triggered by a release
25+
26+
# define buttons
27+
num_keys = 3
28+
pins = (
29+
board.D0, # D0
30+
board.D1, # D1
31+
board.D2 # D2
32+
)
33+
34+
keys = []
35+
36+
# The keycode pair sent for each button:
37+
# D0 is left flipper - iCade key sequence (hold, release) is "hr"
38+
# D1 is right flipper - iCade key sequence (hold, release) is "lv"
39+
# D2 is plunger - iCade key sequence (hold, release) is "xz"
40+
41+
for pin in pins:
42+
tmp_pin = DigitalInOut(pin)
43+
tmp_pin.pull = Pull.UP
44+
keys.append(Debouncer(tmp_pin))
45+
46+
keymap_pressed = {
47+
(0): ("Left Paddle", [Keycode.H]),
48+
(1): ("Right Paddle", [Keycode.L]),
49+
(2): ("Plunger", [Keycode.X])
50+
}
51+
keymap_released = {
52+
(0): ("Left Paddle", [Keycode.R]),
53+
(1): ("Right Paddle", [Keycode.V]),
54+
(2): ("Plunger", [Keycode.Z])
55+
}
56+
57+
# the keyboard object
58+
kbd = Keyboard(usb_hid.devices)
59+
60+
print("\nWelcome to keypad")
61+
print("keymap:")
62+
for k in range(num_keys):
63+
print("\t", (keymap_pressed[k][0]))
64+
print("Waiting for button presses")
65+
66+
67+
while True:
68+
for i in range(num_keys):
69+
keys[i].update()
70+
if keys[i].fell:
71+
print(keymap_pressed[i][0])
72+
kbd.send(*keymap_pressed[i][1])
73+
if keys[i].rose:
74+
print(keymap_released[i][0])
75+
kbd.send(*keymap_released[i][1])

0 commit comments

Comments
 (0)