Coding-robot-手柄_键盘控制信号获取-串口发送

获取手柄控制信号,通过串口发送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import pygame
import time
import serial

# 设置串口和波特率
ser = serial.Serial('COM5', 9600) # 替换为你的Arduino串口
time.sleep(2) # 等待Arduino初始化

pygame.init()
pygame.joystick.init()
done=False

while (done != True):
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done = True # Flag that we are done so we exit this loop
joystick_count = pygame.joystick.get_count()
for i in range(joystick_count):
joystick = pygame.joystick.Joystick(i)
joystick.init()
axes = joystick.get_numaxes()
print('================')
for i in range(7):
axis = joystick.get_axis(i)
value = int(axis * 90) + 90
if i==0:
print(axis)
if abs(value)>100 :
print("发送指令: 0")
ser.write(b'0') # 顺时针转
time.sleep(0.1) # 防止重复发送
if abs(value)<=60 :
print("发送指令: 1")
ser.write(b'1') # 顺时针转
time.sleep(0.1) # 防止重复发送

if i==6:
print(axis)
if abs(value)>100 :
print("发送指令: 3")
ser.write(b'3') # 顺时针转
time.sleep(0.1) # 防止重复发送
if abs(value)<=60 :
print("发送指令: 2")
ser.write(b'2') # 顺时针转
time.sleep(0.1) # 防止重复发送
# if i==0:
# print(axis)
# if abs(value)>100 :
# print("发送指令: 4")
# ser.write(b'4') # 顺时针转
# time.sleep(0.1) # 防止重复发送
# if abs(value)<=60 :
# print("发送指令: 5")
# ser.write(b'5') # 顺时针转
# time.sleep(0.1) # 防止重复发送
# 按键
axes = joystick.get_numbuttons()
print('================')
for i in range(axes):

axis =joystick.get_button(i)
if i==8:
if axis==1:

print(axis)
print("发送指令: 4")
ser.write(b'4') # 顺时针转
time.sleep(0.1) # 防止重复发送
if i==9:
if axis==1:
print(axis)
print("发送指令: 5")
ser.write(b'5') # 顺时针转
time.sleep(0.1) # 防止重复发送 .

获取键盘信号,通过串口发送

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# import serial
# import time

# # 设置串口和波特率
# ser = serial.Serial('COM5', 9600) # 替换'COM3'为你的Arduino串口
# time.sleep(2) # 等待Arduino初始化

# # 发送数据
# ser.write(b'1')

# # 读取数据
# while True:
# if ser.in_waiting > 0: # 检查是否有可读数据
# line = ser.readline().decode('utf-8').rstrip() # 读取一行
# print(line) # 打印接收到的数据

# ser.close() # 关闭串口


import serial
import time
import keyboard # 导入keyboard库

# 设置串口和波特率
ser = serial.Serial('COM5', 9600) # 替换为你的Arduino串口
time.sleep(2) # 等待Arduino初始化

try:
print("按 '1' 进行顺时针转动,按 '0' 进行逆时针转动,按 'q' 退出。")
while True:
if keyboard.is_pressed('1'): # 检测按键 '1'
print("发送指令: 1")
ser.write(b'1') # 顺时针转
time.sleep(0.1) # 防止重复发送
elif keyboard.is_pressed('0'): # 检测按键 '0'
print("发送指令: 0")
ser.write(b'0') # 逆时针转
time.sleep(0.1) # 防止重复发送
elif keyboard.is_pressed('q'): # 检测按键 'q'
print("退出程序。")
break # 退出循环

finally:
ser.close() # 关闭串口