CircuitPython 內建韌體有支援 HID keyborad 功能 (fb 文章 2023/8/22)
我們可用這個功能,把 Pico_Game 拿來制作一個 MakeCode 的專用鍵盤使用
我們可參考以下文章的範例,來進行修改
https://www.instructables.com/DIY-Macro-Keyboard-Using-a-Raspberry-PI-Pico/
2023/12/28
1-先找到 Makecode Arcade 用鍵盤控制的按鍵,如下圖
2- 依照上面的按鈕,把程式定義為 Pico_Game 按鈕按下時要發送的按鍵即可。
以下是完整的程式 pico_gamepad_test.py
import board
import digitalio
import time
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode
keyboard = Keyboard(usb_hid.devices)
up_pin = board.GP7
dn_pin = board.GP8
left_pin = board.GP9
right_pin = board.GP14
a_pin = board.GP0
b_pin = board.GP1
menu_pin = board.GP15
# Initializing Button
up = digitalio.DigitalInOut(up_pin)
dn = digitalio.DigitalInOut(dn_pin)
left = digitalio.DigitalInOut(left_pin)
right = digitalio.DigitalInOut(right_pin)
menu = digitalio.DigitalInOut(menu_pin)
a = digitalio.DigitalInOut(a_pin)
b = digitalio.DigitalInOut(b_pin)
up.direction = digitalio.Direction.INPUT
dn.direction = digitalio.Direction.INPUT
left.direction = digitalio.Direction.INPUT
right.direction = digitalio.Direction.INPUT
menu.direction = digitalio.Direction.INPUT
a.direction = digitalio.Direction.INPUT
b.direction = digitalio.Direction.INPUT
up.pull = digitalio.Pull.UP
dn.pull = digitalio.Pull.UP
left.pull = digitalio.Pull.UP
right.pull = digitalio.Pull.UP
menu.pull = digitalio.Pull.UP
a.pull = digitalio.Pull.UP
b.pull = digitalio.Pull.UP
while True:
# Check if button is pressed and if it is, to press the Macros and toggle LED
if not (up.value):
print(" up button Pressed")
keyboard.press(Keycode.W)
time.sleep(0.05)
keyboard.release(Keycode.W)
if not (dn.value):
print(" down button Pressed")
keyboard.press(Keycode.S)
time.sleep(0.05)
keyboard.release(Keycode.S)
if not (left.value):
print(" left button Pressed")
keyboard.press(Keycode.A)
time.sleep(0.05)
keyboard.release(Keycode.A)
if not (right.value):
print(" right button Pressed")
keyboard.press(Keycode.D)
time.sleep(0.05)
keyboard.release(Keycode.D)
if not (a.value):
print(" a button Pressed")
keyboard.press(Keycode.SPACE)
time.sleep(0.05)
keyboard.release(Keycode.SPACE)
if not (b.value):
print(" b button Pressed")
keyboard.press(Keycode.ENTER)
time.sleep(0.05)
keyboard.release(Keycode.ENTER)
time.sleep(0.02)