• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 定时器的回调函数代码运行出错



    • import sensor, image, time
      from pyb import UART,Timer,Servo
      has_data = False # 初始化为没有数据读入
      def is_data_coming(timer):
          global uart
          global has_data
          if uart.any():
              has_data = True
          else:
              has_data = False
      sensor.reset() # Initialize the camera sensor.
      sensor.set_pixformat(sensor.RGB565) # use RGB565.
      sensor.set_framesize(sensor.QQVGA) # use QQVGA for speed.
      sensor.skip_frames(10) # Let new settings take affect.
      sensor.set_auto_whitebal(False) # turn this off.
      clock = time.clock() # Tracks FPS.
      s1=Servo(1)
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      timer = Timer(4)
      timer.init(freq=10)
      timer.callback(is_data_coming)
      while(True):
          if uart.readline()==b'a':
              print('yes')
              #s1.angle(-90)
          else:
              continue
      
          while(True):
      
              img = sensor.snapshot()
      
              #print(has_data)
              if has_data:
                  data = uart.readline()
                  if data==b'b':
                      break
                  else:
                      print('not b')
          while(True):
              pass
      

      利用定时器的回调函数检测串口是否有数据,在运行uart.readline()==b'a',当底下加上控制舵机代码s1.angle(-90)时即使发送字符b,第二个while中 if has_data也检测不到串口有数据;如果删除s1.angle(-90),发送字符b,if has_data成功检测到数据并跳出循环,这是为什么?



    • 你这是要做什么?为什么逻辑要这么诡异?



    • @kidswong999 这是从一个大程序里简化出来的,也是出问题的地方。我想先让摄像头保持待机,当接收到串口发送的字符时转动舵机,同时进入下一个程序段完成第二个任务,第二个任务是一直进行的,直到串口发送来相应的字符时终止第二个任务的程序段,跳到进行第三个任务的程序段。



    • @kidswong999 就是想实现中断的功能



    • 如果是我的话,我会用状态机轮询。三个嵌套的while循环+中断,我是看不下去😔



    • @kidswong999 😔 😔 所以我没贴完整代码啊,太长了



    • @kidswong999 状态机轮询是什么?有教程链接么?🙃