星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 外部中断报错RuntimeError:



    • 想实现如下功能:上电时等待检测信号(亮蓝灯),信号触发中断之后开始检测线段(此时亮绿灯),检测到之后红灯闪一下,又开始等待下一次的检测信号。代码如下:脱机运行正常,但是接IDE调试时外部中断触发两三次就会报错:Uncaught exception in ExtInt interrupt handler line 15 RuntimeError:

      import sensor, image, time,pyb,micropython,utime
      from pyb import Pin, ExtInt
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565) # grayscale is faster
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(time = 2000)
      clock = time.clock()
      blue = pyb.LED(3)
      green = pyb.LED(2)
      red = pyb.LED(1)
      global start_flag
      start_flag =0  #上电时等待开始检测的信号
      
      def start(line):
          global start_flag
          start_flag = 1
      
      #外部中断P0口 上升沿触发 回调函数为start
      extint = pyb.ExtInt('P0', pyb.ExtInt.IRQ_RISING, pyb.Pin.PULL_NONE, start)
      
      ok = Pin('P1', Pin.OUT_PP)
      
      while(True):
          clock.tick()
          img = sensor.snapshot()
          if enable_lens_corr:
              img.lens_corr(7.8) # 防畸变
          if start_flag == 1:
              blue.off()
              green.on() #开始检测指示灯
              for l in img.find_line_segments((0,45,160,30),merge_distance = 10, max_theta_diff = 180):
                  if l.length()>30:
                      img.draw_line(l.line(), color = (255, 255, 255))
                      start_flag = 0  #找到理想的线之后置零,不在检测
                      ok.high()
                      red.on()
                      utime.sleep_ms(100)
                      ok.low()
                      red.off()
      
          elif start_flag == 0:#等待信号时为蓝灯  工作时为绿灯  找到焊缝时开始等待
              blue.on()
              green.off()
      #    print('FPS %f' % clock.fps())