29212浏览
查看: 29212|回复: 0

[项目] Xbox 行空板麦克纳姆轮车

[复制链接]
本帖最后由 云天 于 2024-2-19 20:02 编辑

Xbox 行空板麦克纳姆轮车图1

【项目背景】
最近买了两个Xbox手柄,这个手柄支持Bluetooth(蓝牙4.0),行空板也支持蓝牙功能。本项目中,Xbox手柄通过蓝牙连接行空板,控制麦克纳姆轮车。

Xbox 行空板麦克纳姆轮车图2


Xbox 行空板麦克纳姆轮车图3


【行空板启动蓝牙】
蓝牙(Bluetooth)是一个短距离无线通信标准,用于在手机、计算机和其他电子设备之间通信。行空板自带 Linux 系统,在 Linux 中权威的蓝牙协议栈实现是 BlueZ。其本身自带了很多有用的工具,如bluetoothctl。
1.电脑通过USB线连接上行空板,通过浏览器地址:10.1.2.3,访问行空板,开启终端。
  1. root@unihiker:~#Bluetoothctl
复制代码
  1. [bluetooth]#power on
复制代码
扫描蓝牙设备,找到Xbox手柄蓝牙地址(40:8E:2C:22:84:31
  1. [bluetooth]#scan on
复制代码

Xbox 行空板麦克纳姆轮车图4


【行空板Python连接Xbox】

使用os库的system执行蓝牙连接命令。
  1. import os
  2. import time
  3. result=0
  4. def shellcom(command,wait):
  5.    global result
  6.    # 调用os模块的system()函数来执行Shell命令
  7.    result = os.system(command)
  8.    #print(result)
  9.    time.sleep(wait)
  10. shellcom("bluetoothctl power on",5)
  11. if result==0:
  12. print("蓝牙已开启")
  13. #shellcom("bluetoothctl scan on",10)
  14. #shellcom("bluetoothctl scan off",2)
  15. shellcom("bluetoothctl agent on",5)
  16. if result==0:
  17. print("代理已开启")
  18. shellcom("bluetoothctl pair 40:8E:2C:22:84:31",10)
  19. if result==0:
  20.     print("蓝牙配对已完成")
  21. else:
  22.     print("蓝牙配对可能已存在")
  23. shellcom("bluetoothctl connect 40:8E:2C:22:84:31",4)
  24. if result==0:
  25.     print("Xbox连接已完成")
  26. else:
  27.     print("Xbox连接失败")
复制代码
【读取Xbox手柄各按键】
使用pygame库读取Xbox手柄各按键。
  1. import pygame
  2. pygame.init()
  3. joysticks = []
  4. clock = pygame.time.Clock()
  5. keepPlaying = True
  6. pygame.joystick.init()
  7. # 初始化手柄
  8. joystick = pygame.joystick.Joystick(0)
  9. joystick.init()
  10. while keepPlaying:
  11.     clock.tick(60)
  12.     for event in pygame.event.get():
  13.         print(event)
复制代码
Xbox 行空板麦克纳姆轮车图10

  1. import pygame
  2. pygame.init()
  3. pygame.joystick.init()
  4. # 初始化手柄
  5. joystick = pygame.joystick.Joystick(0)
  6. joystick.init()
  7. while True:
  8.     for event in pygame.event.get():
  9.          if event.type == pygame.JOYBUTTONDOWN:
  10.              if event.button==0:#"A"键
  11.                 pass
  12.              elif event.button==1:#"B"键
  13.                 pass
  14.              elif event.button==4:#"X"键
  15.                 pass
  16.              elif event.button==3:#"Y"键
  17.                 pass
  18.              elif event.button==6:#"RB"键,右肩键:Right Shoulder Button
  19.                 pass
  20.              elif event.button==7:#"LB"键,左肩键:Left Shoulder Button
  21.                 pass
  22.              elif event.button==10:#"View"键
  23.                 pass
  24.              elif event.button==11:#"Menu"键
  25.                 pass
  26.              elif event.button==15:#“共享”按键
  27.                 pass
  28.              elif event.button==12:#“xbox”按键
  29.                 pass
  30.           elif event.type == pygame.JOYHATMOTION:#方向键
  31.              if event.hat==0:
  32.                  print(str(event.value[0])+":"+str(event.value[1]))
  33.                  if event.value[0]==0:
  34.                      if event.value[1]==0:#中间位置
  35.                          print("“中间位置”方向键")
  36.                         
  37.                      elif event.value[1]==1:#向上
  38.                          print("“向上”方向键")
  39.                         
  40.                      elif event.value[1]==-1:#向下
  41.                          print("“向下”方向键")
  42.                         
  43.                  elif event.value[0]==-1:#向右
  44.                     print("“向右”方向键")
  45.                   
  46.                  elif event.value[0]==1:#向左
  47.                      print("“向左”方向键")
  48.          elif event.type == pygame.JOYAXISMOTION:
  49.              #左摇杆按键
  50.              if event.axis==0:#左右
  51.                 if event.value<-0.1:#向左
  52.                   
  53.                    print("“向左”左摇杆按键")
  54.                 elif event.value>0.1:#向右
  55.                  
  56.                    print("“向右”左摇杆按键")
  57.                 else:
  58.                   
  59.                    print("左右stop左摇杆按键")
  60.              elif event.axis==1:#上下
  61.                 if event.value<-0.1:#向上
  62.                   
  63.                    print("“向上”左摇杆按键")
  64.                 elif event.value>0.1:#向下
  65.                   
  66.                    print("“向下”左摇杆按键")
  67.                 else:
  68.                   
  69.                     print("上下stop左摇杆按键")
  70.              #右摇杆按键
  71.              if event.axis==2:#左右
  72.                 if event.value<-0.1:#向右
  73.                   
  74.                    print("“向右”右摇杆按键")
  75.                 elif event.value>0.1:#向左
  76.                  
  77.                    print("“向左”右摇杆按键")
  78.                 else:
  79.                   
  80.                     print("“停止”右摇杆按键")
  81.              elif event.axis==3:#上下
  82.                 if event.value<-0.1:#向上
  83.                    print("“向上”右摇杆按键")
  84.                 elif event.value>0.1:#向下
  85.                    print("“向下”右摇杆按键")
  86.              elif event.axis==5:#左射击键
  87.                   if event.value>0:
  88.                      print("左射击键")
  89.                   
  90.              elif event.axis==4:#右射击键
  91.                    if event.value>0:
  92.                      print("右射击键")
复制代码

【控制麦克纳姆轮车】
1.电机驱动扩展板初始化
  1. from pinpong.extension.unihiker import *
  2. from pinpong.libs.microbit_motor import DFMotor
  3. from pinpong.board import Board
  4. from pinpong.board import Pin
  5. Board().begin()
  6. p_dfr0548_motor_M1 = DFMotor(1)
  7. p_dfr0548_motor_M2 = DFMotor(2)
  8. p_dfr0548_motor_M3 = DFMotor(3)
  9. p_dfr0548_motor_M4 = DFMotor(4)
复制代码
Xbox 行空板麦克纳姆轮车图6

2.自定义麦克纳姆轮车运动函数
  1. def forward(speed):#带速度参数——前进
  2.     p_dfr0548_motor_M1.speed(speed)
  3.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  4.     p_dfr0548_motor_M2.speed(speed)
  5.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  6.     p_dfr0548_motor_M3.speed(speed)
  7.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  8.     p_dfr0548_motor_M4.speed(speed)
  9.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)  
  10. def back(speed):#带速度参数——后退
  11.     p_dfr0548_motor_M1.speed(speed)
  12.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  13.     p_dfr0548_motor_M2.speed(speed)
  14.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  15.     p_dfr0548_motor_M3.speed(speed)
  16.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  17.     p_dfr0548_motor_M4.speed(speed)
  18.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)
  19. def left(speed):#带速度参数——向左
  20.     p_dfr0548_motor_M1.speed(speed)
  21.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  22.     p_dfr0548_motor_M2.speed(speed)
  23.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  24.     p_dfr0548_motor_M3.speed(speed)
  25.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  26.     p_dfr0548_motor_M4.speed(speed)
  27.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)
  28. def right(speed):#带速度参数——向右
  29.     p_dfr0548_motor_M1.speed(speed)
  30.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  31.     p_dfr0548_motor_M2.speed(speed)
  32.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  33.     p_dfr0548_motor_M3.speed(speed)
  34.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  35.     p_dfr0548_motor_M4.speed(speed)
  36.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)
  37. def stop():#停止
  38.     p_dfr0548_motor_M1.stop()
  39.     p_dfr0548_motor_M2.stop()
  40.     p_dfr0548_motor_M3.stop()
  41.     p_dfr0548_motor_M4.stop()
  42. def Lrotate(speed):#带速度参数——向左原地旋转
  43.     p_dfr0548_motor_M1.speed(speed)
  44.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  45.     p_dfr0548_motor_M2.speed(speed)
  46.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  47.     p_dfr0548_motor_M3.speed(speed)
  48.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  49.     p_dfr0548_motor_M4.speed(speed)
  50.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)      
  51. def Rrotate(speed):#带速度参数——向右原地旋转
  52.     p_dfr0548_motor_M1.speed(speed)
  53.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  54.     p_dfr0548_motor_M2.speed(speed)
  55.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  56.     p_dfr0548_motor_M3.speed(speed)
  57.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  58.     p_dfr0548_motor_M4.speed(speed)
  59.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)
复制代码
Xbox 行空板麦克纳姆轮车图5

3.Xbox按键控制麦克纳姆轮车运动
  1. if event.type == pygame.JOYHATMOTION:#方向键
  2.              if event.hat==0:
  3.                  print(str(event.value[0])+":"+str(event.value[1]))
  4.                  if event.value[0]==0:
  5.                      if event.value[1]==0:#中间位置
  6.                          print("“中间位置”方向键")
  7.                          stop()
  8.                      elif event.value[1]==1:#向上
  9.                          print("“向上”方向键")
  10.                          forward(200)
  11.                      elif event.value[1]==-1:#向下
  12.                          print("“向下”方向键")
  13.                          back(200)
  14.                  elif event.value[0]==-1:#向右
  15.                     print("“向右”方向键")
  16.                     right(200)
  17.                  elif event.value[0]==1:#向左
  18.                      print("“向左”方向键")
  19.                      left(200)
  20.          elif event.type == pygame.JOYAXISMOTION:
  21.              #左摇杆按键
  22.              if event.axis==0:#左右
  23.                 if event.value<-0.1:#向左
  24.                    left(int(abs(event.value)*255))
  25.                    print("“向左”左摇杆按键")
  26.                 elif event.value>0.1:#向右
  27.                    right(int(event.value*255))
  28.                    print("“向右”左摇杆按键")
  29.                 else:
  30.                    stop()
  31.                    print("左右stop左摇杆按键")
  32.              elif event.axis==1:#上下
  33.                 if event.value<-0.1:#向上
  34.                    forward(int(abs(event.value)*255))
  35.                    print("“向上”左摇杆按键")
  36.                 elif event.value>0.1:#向下
  37.                    back(int(event.value*255))
  38.                    print("“向下”左摇杆按键")
  39.                 else:
  40.                     stop()
  41.                     print("上下stop左摇杆按键")
  42.              #右摇杆按键
  43.              if event.axis==2:#左右
  44.                 if event.value<-0.1:#向右
  45.                    Rrotate(int(abs(event.value)*255))
  46.                    print("“向右”右摇杆按键")
  47.                 elif event.value>0.1:#向左
  48.                    Lrotate(int(event.value*255))
  49.                    print("“向左”右摇杆按键")
  50.                 else:
  51.                     stop()
  52.                     print("“停止”右摇杆按键")
复制代码
Xbox 行空板麦克纳姆轮车图7

4.控制车上灯(1)控制车底彩灯,共四个LED彩灯,使用NeoPixel库驱动。
  1.     if bs==1 and time.time()-time1>0.2:
  2.        time1=time.time()
  3.        np1.rotate(1)
  4.     elif bs==2 and time.time()-time2>0.5:
  5.        time2=time.time()
  6.        np1.rotate(1)      
  7.     for event in pygame.event.get():
  8.          if event.type == pygame.JOYBUTTONDOWN:
  9.              if event.button==0:#"A"键
  10.                 print("“A”键")
  11.                 color=0xFF0000
  12.              elif event.button==1:#"B"键
  13.                  print("“B”键")
  14.                  color=0x00FF00
  15.              elif event.button==4:#"Y"键
  16.                  print("“Y”键")
  17.                  color=0x0000FF
  18.              elif event.button==3:#"X"键
  19.                  print("“X”键")
  20.                  color=0xFF00FF
  21.              elif event.button==6:#"RB"键,右肩键:Right Shoulder Button
  22.                  print("“RB”键")
  23.                  pin14.write_digital(1)
  24.                  pin15.write_digital(1)
  25.              elif event.button==7:#"LB"键,左肩键:Left Shoulder Button
  26.                  print("“LB”键")
  27.                  pin14.write_digital(0)
  28.                  pin15.write_digital(0)
  29.              elif event.button==10:#"View"键
  30.                  print("“View”键")
  31.                  bs=1
  32.                  np1.rainbow(0,3,1,360)
  33.              elif event.button==11:#"Menu"键
  34.                 print("“Menu”键")
  35.                 bs=2
  36.                 np1.rainbow(0,3,1,360)
  37.              elif event.button==15:#“共享”按键
  38.                 print("“共享”键")
  39.                 bs=0
  40.                 np1.clear()
  41.              elif event.button==12:#“xbox”按键
  42.                 print("“xbox”键")
复制代码
(2)控制车前灯,两个LED灯分别接在引脚14、15。
  1.              if event.axis==5:#左射击键
  2.                   if event.value>0:
  3.                      print("左射击键")
  4.                      np1.range_color(0,3,color)
  5.              elif event.axis==4:#右射击键
  6.                    if event.value>0:
  7.                      print("右射击键")
  8.                      np1.clear()
复制代码
Xbox 行空板麦克纳姆轮车图8



Xbox 行空板麦克纳姆轮车图9

【完整程序】
  1. import pygame
  2. import time
  3. pygame.init()
  4. pygame.joystick.init()
  5. # 初始化手柄
  6. joystick = pygame.joystick.Joystick(0)
  7. joystick.init()
  8. from pinpong.extension.unihiker import *
  9. from pinpong.libs.microbit_motor import DFMotor
  10. from pinpong.board import Board
  11. from pinpong.board import NeoPixel
  12. from pinpong.board import Pin
  13. Board().begin()
  14. pin1 = Pin(Pin.P8)
  15. np1 = NeoPixel(pin1,4)
  16. p_dfr0548_motor_M1 = DFMotor(1)
  17. p_dfr0548_motor_M2 = DFMotor(2)
  18. p_dfr0548_motor_M3 = DFMotor(3)
  19. p_dfr0548_motor_M4 = DFMotor(4)
  20. pin14 = Pin(Pin.P14,Pin.OUT)
  21. pin15 = Pin(Pin.P15,Pin.OUT)
  22. color=0x000000
  23. bs=0
  24. time1=0
  25. time2=0
  26. def forward(speed):#带速度参数——前进
  27.     p_dfr0548_motor_M1.speed(speed)
  28.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  29.     p_dfr0548_motor_M2.speed(speed)
  30.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  31.     p_dfr0548_motor_M3.speed(speed)
  32.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  33.     p_dfr0548_motor_M4.speed(speed)
  34.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)  
  35. def back(speed):#带速度参数——后退
  36.     p_dfr0548_motor_M1.speed(speed)
  37.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  38.     p_dfr0548_motor_M2.speed(speed)
  39.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  40.     p_dfr0548_motor_M3.speed(speed)
  41.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  42.     p_dfr0548_motor_M4.speed(speed)
  43.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)
  44. def left(speed):#带速度参数——向左
  45.     p_dfr0548_motor_M1.speed(speed)
  46.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  47.     p_dfr0548_motor_M2.speed(speed)
  48.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  49.     p_dfr0548_motor_M3.speed(speed)
  50.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  51.     p_dfr0548_motor_M4.speed(speed)
  52.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)
  53. def right(speed):#带速度参数——向右
  54.     p_dfr0548_motor_M1.speed(speed)
  55.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  56.     p_dfr0548_motor_M2.speed(speed)
  57.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  58.     p_dfr0548_motor_M3.speed(speed)
  59.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  60.     p_dfr0548_motor_M4.speed(speed)
  61.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)
  62. def stop():#停止
  63.     p_dfr0548_motor_M1.stop()
  64.     p_dfr0548_motor_M2.stop()
  65.     p_dfr0548_motor_M3.stop()
  66.     p_dfr0548_motor_M4.stop()
  67. def Lrotate(speed):#带速度参数——向左原地旋转
  68.     p_dfr0548_motor_M1.speed(speed)
  69.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CCW)
  70.     p_dfr0548_motor_M2.speed(speed)
  71.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CCW)
  72.     p_dfr0548_motor_M3.speed(speed)
  73.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CCW)
  74.     p_dfr0548_motor_M4.speed(speed)
  75.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CCW)      
  76. def Rrotate(speed):#带速度参数——向右原地旋转
  77.     p_dfr0548_motor_M1.speed(speed)
  78.     p_dfr0548_motor_M1.run(p_dfr0548_motor_M1.CW)
  79.     p_dfr0548_motor_M2.speed(speed)
  80.     p_dfr0548_motor_M2.run(p_dfr0548_motor_M2.CW)
  81.     p_dfr0548_motor_M3.speed(speed)
  82.     p_dfr0548_motor_M3.run(p_dfr0548_motor_M3.CW)
  83.     p_dfr0548_motor_M4.speed(speed)
  84.     p_dfr0548_motor_M4.run(p_dfr0548_motor_M4.CW)
  85. while True:
  86.     if bs==1 and time.time()-time1>0.2:
  87.        time1=time.time()
  88.        np1.rotate(1)
  89.     elif bs==2 and time.time()-time2>0.5:
  90.        time2=time.time()
  91.        np1.rotate(1)      
  92.     for event in pygame.event.get():
  93.          if event.type == pygame.JOYBUTTONDOWN:
  94.              if event.button==0:#"A"键
  95.                 print("“A”键")
  96.                 color=0xFF0000
  97.              elif event.button==1:#"B"键
  98.                  print("“B”键")
  99.                  color=0x00FF00
  100.              elif event.button==4:#"Y"键
  101.                  print("“Y”键")
  102.                  color=0x0000FF
  103.              elif event.button==3:#"X"键
  104.                  print("“X”键")
  105.                  color=0xFF00FF
  106.              elif event.button==6:#"RB"键,右肩键:Right Shoulder Button
  107.                  print("“RB”键")
  108.                  pin14.write_digital(1)
  109.                  pin15.write_digital(1)
  110.              elif event.button==7:#"LB"键,左肩键:Left Shoulder Button
  111.                  print("“LB”键")
  112.                  pin14.write_digital(0)
  113.                  pin15.write_digital(0)
  114.              elif event.button==10:#"View"键
  115.                  print("“View”键")
  116.                  bs=1
  117.                  np1.rainbow(0,3,1,360)
  118.              elif event.button==11:#"Menu"键
  119.                 print("“Menu”键")
  120.                 bs=2
  121.                 np1.rainbow(0,3,1,360)
  122.              elif event.button==15:#“共享”按键
  123.                 print("“共享”键")
  124.                 bs=0
  125.                 np1.clear()
  126.              elif event.button==12:#“xbox”按键
  127.                 print("“xbox”键")
  128.          elif event.type == pygame.JOYHATMOTION:#方向键
  129.              if event.hat==0:
  130.                  print(str(event.value[0])+":"+str(event.value[1]))
  131.                  if event.value[0]==0:
  132.                      if event.value[1]==0:#中间位置
  133.                          print("“中间位置”方向键")
  134.                          stop()
  135.                      elif event.value[1]==1:#向上
  136.                          print("“向上”方向键")
  137.                          forward(200)
  138.                      elif event.value[1]==-1:#向下
  139.                          print("“向下”方向键")
  140.                          back(200)
  141.                  elif event.value[0]==-1:#向右
  142.                     print("“向右”方向键")
  143.                     right(200)
  144.                  elif event.value[0]==1:#向左
  145.                      print("“向左”方向键")
  146.                      left(200)
  147.          elif event.type == pygame.JOYAXISMOTION:
  148.              #左摇杆按键
  149.              if event.axis==0:#左右
  150.                 if event.value<-0.1:#向左
  151.                    left(int(abs(event.value)*255))
  152.                    print("“向左”左摇杆按键")
  153.                 elif event.value>0.1:#向右
  154.                    right(int(event.value*255))
  155.                    print("“向右”左摇杆按键")
  156.                 else:
  157.                    stop()
  158.                    print("左右stop左摇杆按键")
  159.              elif event.axis==1:#上下
  160.                 if event.value<-0.1:#向上
  161.                    forward(int(abs(event.value)*255))
  162.                    print("“向上”左摇杆按键")
  163.                 elif event.value>0.1:#向下
  164.                    back(int(event.value*255))
  165.                    print("“向下”左摇杆按键")
  166.                 else:
  167.                     stop()
  168.                     print("上下stop左摇杆按键")
  169.              #右摇杆按键
  170.              if event.axis==2:#左右
  171.                 if event.value<-0.1:#向右
  172.                    Rrotate(int(abs(event.value)*255))
  173.                    print("“向右”右摇杆按键")
  174.                 elif event.value>0.1:#向左
  175.                    Lrotate(int(event.value*255))
  176.                    print("“向左”右摇杆按键")
  177.                 else:
  178.                     stop()
  179.                     print("“停止”右摇杆按键")
  180.              elif event.axis==3:#上下
  181.                 if event.value<-0.1:#向上
  182.                    print("“向上”右摇杆按键")
  183.                 elif event.value>0.1:#向下
  184.                    print("“向下”右摇杆按键")
  185.              elif event.axis==5:#左射击键
  186.                   if event.value>0:
  187.                      print("左射击键")
  188.                      np1.range_color(0,3,color)
  189.              elif event.axis==4:#右射击键
  190.                    if event.value>0:
  191.                      print("右射击键")
  192.                      np1.clear()
复制代码
【演示视频】




您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail