首先,我根本不是开发人员,只是想让事情按我的意愿工作。无法理解这一点:
从一方面来看,这是我在 Ubuntu PC 上的 python 脚本,它将按钮输入从 Playstation 4 操纵杆发送到 micro:bit 的串行端口(操纵杆通过蓝牙连接到 Ubuntu):
import serial
import pygame
pygame.init()
pygame.joystick.init()
joystick = pygame.joystick.Joystick(0)
joystick.init()
screen = pygame.display.set_mode((100,100))
device = serial.Serial('/dev/ttyACM0', 115200)
try:
while True:
events = pygame.event.get()
for event in events:
if event.type == pygame.JOYBUTTONDOWN:
if event.button == 7:
device.write(b"1\r\n")
elif event.button == 6:
device.write(b"2\r\n")
elif event.type == pygame.JOYBUTTONUP:
if joystick.get_button(7) == 1:
device.write(b"1\r\n")
elif joystick.get_button(6) == 1:
device.write(b"2\r\n")
elif joystick.get_axis(0) < 0:
device.write(b"3\r\n")
elif joystick.get_axis(0) > 0:
device.write(b"4\r\n")
else:
device.write(b"5\r\n")
if event.type == pygame.JOYAXISMOTION:
if event.axis == 0:
if event.value < 0:
device.write(b"3\r\n")
elif event.value > 0:
device.write(b"4\r\n")
elif event.value == 0:
if joystick.get_button(7) == 1:
device.write(b"1\r\n")
elif joystick.get_button(6) == 1:
device.write(b"2\r\n")
else:
device.write(b"5\r\n")
except KeyboardInterrupt:
print("EXITING NOW")
joystick.quit()
device.close()
从另一面来看,这是我从 Mu 编辑器闪到 micro:bit 的简单 micropython 代码,并希望它可以工作,但它没有 :lol:
from microbit import *
uart.init(baudrate=115200)
while True:
joyinput = uart.read()
if joyinput == "1":
display.show(Image.ARROW_N)
elif joyinput == "2":
display.show(Image.ARROW_S)
elif joyinput == "3":
display.show(Image.ARROW_W)
elif joyinput == "4":
display.show(Image.ARROW_E)
elif joyinput == "5":
display.show(Image.HAPPY)
在 Mu 编辑器的 REPL 控制台中,我可以看到通信进展顺利,即只要我按住某个按钮或操纵杆轴移动,我就会得到具有适当编号的 REPL:
- 1 用于操纵杆按钮 7 (R2)
- 2 用于操纵杆按钮 6 (L2)
- 3 用于操纵杆轴 0 左侧位置(操纵杆上的左侧模拟)
- 3 用于操纵杆轴 0 右侧位置(操纵杆上的左侧模拟)
- 5 如果没有按下/移动任何内容
但是 LED 矩阵上的图标永远不会出现。
到目前为止,只有在脚本末尾添加一个“else”语句时,我才有可能显示一些图标,但这是正常的,因为它是“else”。例如下面的最后两行:
from microbit import *
uart.init(baudrate=115200)
while True:
joyinput = uart.read()
if joyinput == "1":
display.show(Image.ARROW_N)
elif joyinput == "2":
display.show(Image.ARROW_S)
elif joyinput == "3":
display.show(Image.ARROW_W)
elif joyinput == "4":
display.show(Image.ARROW_E)
elif joyinput == "5":
display.show(Image.HAPPY)
else:
display.show(Image.HAPPY)
非常感谢,我很乐意提供所需的任何其他信息。