В различных DIY проектах очень часто используется управление с помощью джойстика. Действительно, это удобно, можно использовать различные сочетания клавиш и джойстиков.
Самая популярная модель, которую легко найти на Aliexpress работает по радиоканалу с частотой 2.4 Гц и включает в себя джойстик, а так же приёмник.
Выглядит это примерно так:
Приёмник подключается к Ардуино или к Raspberry — примеров в интернете — просто сотни.
Но дело в том, что иногда гораздо удобнее подключать джойстик через Serial — порт. Умные люди придумали очень классный переходник, который автоматически конвертирует данные вне очень удобный формат.
Для отладки был использован переходник на USB, а в дальнейшем может выполнено подключение напрямую, например к Raspberry Pi.
Подключим устройство и посмотрим, как выглядят сообщения о нажатиях кнопок и положении джойстиков.
Нажатие на кнопки правой стороны обрабатываются однократно и у них нет символа переноса строки, нажатие на стрелки обрабатываются пока кнопка не была отпущена, но у них тоже нет конца строки.
А вот положение джойстика заканчивается символом переноса строки.
Я написал простейшую программу для управления черепашкой с помощью джойстика.
У данной программы есть недостаток. Если зажата какая-то клавиша, а в этот момент двигается джойстик — программа выполнит только действие «подвешенное» на кнопку и проигнорирует джойстик.
В дальнейшем можно использовать этот джойстик для различных проектов.
Самая популярная модель, которую легко найти на Aliexpress работает по радиоканалу с частотой 2.4 Гц и включает в себя джойстик, а так же приёмник.
Выглядит это примерно так:
Приёмник подключается к Ардуино или к Raspberry — примеров в интернете — просто сотни.
Но дело в том, что иногда гораздо удобнее подключать джойстик через Serial — порт. Умные люди придумали очень классный переходник, который автоматически конвертирует данные в
Для отладки был использован переходник на USB, а в дальнейшем может выполнено подключение напрямую, например к Raspberry Pi.
Подключим устройство и посмотрим, как выглядят сообщения о нажатиях кнопок и положении джойстиков.
Нажатие на кнопки правой стороны обрабатываются однократно и у них нет символа переноса строки, нажатие на стрелки обрабатываются пока кнопка не была отпущена, но у них тоже нет конца строки.
А вот положение джойстика заканчивается символом переноса строки.
Я написал простейшую программу для управления черепашкой с помощью джойстика.
import serial
import sys
from time import sleep
import turtle
ser = serial.Serial ("/dev/cu.usbserial", 9600) #Open port with baud rate
turtle.shape("turtle")
turtle.left(90)
while True:
flag = ser.read(1) # Считываем первый байт
if flag.decode('utf-8') in ['W']: # Если джойстик, то выполняется пересчёт координат
st = ser.readline().decode('utf-8')
data = flag.decode('utf-8') +st
data = data.strip()
X,Y = data.split('P')
X = int(X[1:])
Y = int(Y)
if X < 127 :
turtle.forward(10)
elif X > 127:
turtle.backward(10)
if Y < 128:
turtle.left(2)
elif Y > 128:
turtle.right(2)
else:
data = flag.decode('utf-8')
print(data)
if data == 'I': # Если нажат треугольник
turtle.reset()
turtle.home()
elif data == 'J': # Если нажат крестик
sys.exit(0)
У данной программы есть недостаток. Если зажата какая-то клавиша, а в этот момент двигается джойстик — программа выполнит только действие «подвешенное» на кнопку и проигнорирует джойстик.
В дальнейшем можно использовать этот джойстик для различных проектов.
Комментарии (5)
staticmain
11.06.2019 18:22Если зажата какая-то клавиша, а в этот момент двигается джойстик — программа выполнит только действие «подвешенное» на кнопку и проигнорирует джойстик.
Кажется, что это очень критичный баг, который делает полноценное управление почти полностью невозможным.
nevzorofff
Вспомнились начало 2000-х, когда сломанные джойстики клонов NES переделывались пол LPT:)
VBKesha
Я на таких до сих пор играю.