星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • mv程序可以正常下载,但是连接到32板 mv没有任何反应(在电脑上可以正常运行程序)qq



    • 请在这里粘贴代码
      ```import sensor, image, time, pyb
      from pyb import UART
      
      uart = UART(3, 9600)
      
      red_led = pyb.LED(1)
      yellow_led = pyb.LED(2)
      blue_led = pyb.LED(3)
      
      red_led.off()
      yellow_led.off()
      blue_led.off()
      
      yellow_threshold   = (40, 85, -20, 5, 15, 75)
      red_threshold = (20, 70, 25, 85, 15, 70)
      black_threshold = (0, 10, -10, 10, -10, 10)
      
      sensor.reset() # 初始化摄像头
      sensor.set_pixformat(sensor.RGB565) # 格式为 RGB565.
      sensor.set_framesize(sensor.QQVGA) # 使用 QQVGA 速度快一些
      sensor.skip_frames(10) # 跳过10帧,使新设置生效
      sensor.set_auto_gain(False)
      sensor.set_auto_whitebal(False)
      #关闭白平衡。白平衡是默认开启的,在颜色识别中,一定要关闭白平衡。
      clock = time.clock() # 追踪帧率
      yellow_num = 0
      yellow_x = 0
      yellow_y = 0
      red_num = 0
      red_x = 0
      red_y = 0
      black_x = 0
      black_y = 0
      data = 0
      redata = 0
      e = 0
      f = 0
      while(0):
          redata = uart.readchar()
          print(redata)
          if redata ==1:
              break
      
      while(True):
          clock.tick()
          img = sensor.snapshot() # 从感光芯片获得一张图像
      
          blobs_2 = img.find_blobs([red_threshold],pixels_threshold=20)
          if blobs_2:
              red_led.on()
              for i in range(len(blobs_2)):
                  red_num = blobs_2[i].pixels()
                  if red_num>65:
                      blue_led.on()
                      red_x = blobs_2[i][5]-80
                      red_y = blobs_2[i][6]-60
                      if red_x>5:
                          data |=0x08
                      if red_x <-5:
                          data |=0x04
                      if red_y>5:
                          data |=0x02
                      if red_y<-5:
                          data |=0x01
                      uart.writechar(data)
                      data = 0
                      e = 1
                  else:
                      blue_led.off()
                      uart.writechar(0)
                      e = 0
              for j in blobs_2:
                  img.draw_rectangle(j[0:4])
                  img.draw_cross(j[5], j[6])
          else:
              red_led.off()
              blue_led.off()
              uart.writechar(0)
              e = 0
      
          if e == 0:
              blobs_1 = img.find_blobs([yellow_threshold],pixels_threshold=20)
              if blobs_1:
                  yellow_led.on()
                  for i in range(len(blobs_1)):
                      yellow_num = blobs_1[i].pixels()
                      if yellow_num>120:
                          blue_led.on()
                          yellow_x = blobs_1[i][5]-80
                          yellow_y = blobs_1[i][6]-60
                          if ((yellow_x>0)+(yellow_x<35)) == 2:
                              data |=0x04
                          if ((yellow_x<0)+(yellow_x>-35)) == 2:
                              data |=0x08
                          #if ((yellow_y>0)+(yellow_y<15))  == 2:
                          #    data |=0x01
                          #if ((yellow_y<0)+(yellow_y>-15)) == 2:
                          #    data |=0x02
                          uart.writechar(data)
                          data = 0
                          f = 1
                      else:
                          blue_led.off()
                          uart.writechar(0)
                          f = 0
                  for j in blobs_1:
                      img.draw_rectangle(j[0:4])
                      img.draw_cross(j[5], j[6])
              else:
                  yellow_led.off()
                  blue_led.off()
                  uart.writechar(0)
                  f = 0
          else:
              yellow_led.off()
      
          if e == 0:
              if f == 0:
                  blobs_3 = img.find_blobs([black_threshold],pixels_threshold=120)
                  if blobs_3:
                      most_pixels = 0
                      largest_blob = 0
                      for i in range(len(blobs_3)):
                          if blobs_3[i].pixels() > most_pixels:
                              most_pixels = blobs_3[i].pixels()
                              largest_blob = i
                      img.draw_rectangle(blobs_3[largest_blob][0:4])
                      img.draw_cross(blobs_3[largest_blob][5],blobs_3[largest_blob][6])
                      black_x = blobs_3[largest_blob][5]-80
                      black_y = blobs_3[largest_blob][6]-60
                      if black_x>9:
                          data |=0x08
                      if black_x<-9:
                          data |=0x04
                      if black_y>9:
                          data |=0x02
                      if black_y<-9:
                          data |=0x01
                      uart.writechar(data)
                      data = 0


    • https://singtown.com/learn/50240/

      串口接收按照视频操作。