星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • openmv和舵机控制板之间怎么通讯?我搜到这个是什么意思?大佬们求解



    • ''
      def MoveServo(servoId, pos, time):
      global uart
      buf = bytearray(b'\x55\x55\x08\x03\x01')
      buf.append(0xff & actNum)
      buf.append(0xff & time)
      buf.append(0xff & (time >> 8))
      buf.append((0xff & servoId))
      buf.append(0xff & pos)
      buf.append(0xff & (pos >> 8))
      uart.write(buf)
      '''

      def RunActionGroup(actNum, num):
      global uart
      buf = bytearray(b'\x55\x55\x05\x06') #帧头, 长度, 命令 6
      buf.append(0xff & actNum) #追加动作组号数
      buf.append(0xff & num) #运行次数
      buf.append(0xff & (num >> 8))
      uart.write(buf)

      def StopActionGroup():
      uart.write(b'\x55\x55\x02\x07') #发送停止指令

      '''
      def WaitForFinish(timeout):
      buf = bytearray()
      timeout = utime.time() + timeout #计算超时时间到达后的系统时间
      while True:
      if utime.time() > timeout: #如果系统时间达到就返回False,即动作组没在指定时间内停止
      return False
      try:
      rcv = uart.readline() #接收数据
      if rcv is not None:
      buf = rcv
      while True:
      try:
      index = buf.index(b'\x55\x55') #查找帧头
      if len(buf) >= buf[index + 2]:
      buf = buf[index:] #将帧头前面不符合的部分剔除
      if (buf[2] + 2) <= len(buf): #缓存中的数据数据是否完整
      cmd = buf[0: (buf[2]+2)] #将命令取出 print("OK")
      buf = buf[buf[2]+2:]
      print(cmd[3])
      if cmd[3] == 0x08 or cmd[3] == 0x07: #接受到的数据的命令号为8或7就是动作已停止
      return True
      except:
      break
      except:
      continue

      MoveServo(19, 1500, 1000)
      MoveServo(20, 1500, 1000)
      '''



    • 这是与机械臂的舵机控制板通讯的程序,一般厂家会给用于二次开发的通讯协议的。
      哈哈!正好我需要这段代码😂