Прежде всего, я вообще не разработчик, просто пытаюсь заставить вещи работать так, как я хочу. Не могу понять это:
С одной стороны, это мой python скрипт на Ubuntu P C, который отправляет входы кнопок с джойстика Playstation 4 на последовательный порт micro: bit (джойстик подключен к Ubuntu через Bluetooth ):
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()
С другой стороны, это простой код micro python, который я высветил в micro: bit из редактора Mu и ожидал, что он будет работать, но это не так: 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)
В консоли REPL редактора Mu я вижу, что связь идет хорошо, то есть, пока я держу нажатой какую-то кнопку или перемещенную ось джойстика, я получаю REPL с соответствующим номером:
- 1 для кнопки джойстика 7 (R2)
- 2 для кнопки джойстика 6 (L2)
- 3 для оси джойстика 0 в левом положении (левый аналог на джойстике)
- 3 для оси джойстика 0 правое положение (левый аналог на джойстике)
- 5, если ничего не нажимается / не перемещается
Но значки на светодиодной матрице никогда не появляются.
До сих пор у меня была возможность отображать значок, только я f Я добавляю еще один оператор «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)
![enter image description here](https://i.stack.imgur.com/acCY1.png)
Заранее большое спасибо, я был бы рад предоставить любую дополнительную необходимую информацию.