added pinball code
This commit is contained in:
parent
b2cf4c0888
commit
681da8be9b
1 changed files with 75 additions and 0 deletions
75
GemmaM0_Pinball/code.py
Normal file
75
GemmaM0_Pinball/code.py
Normal file
|
|
@ -0,0 +1,75 @@
|
||||||
|
# SPDX-FileCopyrightText: 2022 john park & tod kurt for Adafruit Industries
|
||||||
|
# SPDX-License-Identifier: MIT
|
||||||
|
# Gemma IO demo - Keyboard emu
|
||||||
|
# iCade Pinball Edition
|
||||||
|
|
||||||
|
import board
|
||||||
|
from digitalio import DigitalInOut, Pull
|
||||||
|
from adafruit_debouncer import Debouncer
|
||||||
|
import usb_hid
|
||||||
|
from adafruit_hid.keyboard import Keyboard
|
||||||
|
from adafruit_hid.keycode import Keycode
|
||||||
|
|
||||||
|
# Allows three buttons on a Gemma M0 to control iCade standard Pinball Arcade
|
||||||
|
# game on iOS using USB to Lightning "camera connector"
|
||||||
|
|
||||||
|
# iCade keyboard mappings
|
||||||
|
# See developer doc at: http://www.ionaudio.com/products/details/icade
|
||||||
|
|
||||||
|
# WE YT UF IM OG
|
||||||
|
# AQ< -->DC
|
||||||
|
# XZ HR JN KP LV
|
||||||
|
|
||||||
|
#control key is triggered by a press, doesn't repeat, second control key is
|
||||||
|
#triggered by a release
|
||||||
|
|
||||||
|
# define buttons
|
||||||
|
num_keys = 3
|
||||||
|
pins = (
|
||||||
|
board.D0, # D0
|
||||||
|
board.D1, # D1
|
||||||
|
board.D2 # D2
|
||||||
|
)
|
||||||
|
|
||||||
|
keys = []
|
||||||
|
|
||||||
|
# The keycode pair sent for each button:
|
||||||
|
# D0 is left flipper - iCade key sequence (hold, release) is "hr"
|
||||||
|
# D1 is right flipper - iCade key sequence (hold, release) is "lv"
|
||||||
|
# D2 is plunger - iCade key sequence (hold, release) is "xz"
|
||||||
|
|
||||||
|
for pin in pins:
|
||||||
|
tmp_pin = DigitalInOut(pin)
|
||||||
|
tmp_pin.pull = Pull.UP
|
||||||
|
keys.append(Debouncer(tmp_pin))
|
||||||
|
|
||||||
|
keymap_pressed = {
|
||||||
|
(0): ("Left Paddle", [Keycode.H]),
|
||||||
|
(1): ("Right Paddle", [Keycode.L]),
|
||||||
|
(2): ("Plunger", [Keycode.X])
|
||||||
|
}
|
||||||
|
keymap_released = {
|
||||||
|
(0): ("Left Paddle", [Keycode.R]),
|
||||||
|
(1): ("Right Paddle", [Keycode.V]),
|
||||||
|
(2): ("Plunger", [Keycode.Z])
|
||||||
|
}
|
||||||
|
|
||||||
|
# the keyboard object
|
||||||
|
kbd = Keyboard(usb_hid.devices)
|
||||||
|
|
||||||
|
print("\nWelcome to keypad")
|
||||||
|
print("keymap:")
|
||||||
|
for k in range(num_keys):
|
||||||
|
print("\t", (keymap_pressed[k][0]))
|
||||||
|
print("Waiting for button presses")
|
||||||
|
|
||||||
|
|
||||||
|
while True:
|
||||||
|
for i in range(num_keys):
|
||||||
|
keys[i].update()
|
||||||
|
if keys[i].fell:
|
||||||
|
print(keymap_pressed[i][0])
|
||||||
|
kbd.send(*keymap_pressed[i][1])
|
||||||
|
if keys[i].rose:
|
||||||
|
print(keymap_released[i][0])
|
||||||
|
kbd.send(*keymap_released[i][1])
|
||||||
Loading…
Reference in a new issue