• 安装星瞳实验室APP,快速收到回复。扫描二维码或者点击 https://singtown.com/app/
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • 一个提问,一个帖子,标题为问题的介绍
  • 请贴出具体的代码,与报错提示。
  • 代码一定要让别人可以运行的文本,不要贴图片
  • 关于偏转量固定不变的问题



    • import sensor, image, time
      from pyb import UART
      from pyb import Servo
      import json
      
      #设置阈值
      red_threshold_01 = (62, 99, -9, 58, 18, 57)
      
      step = 0
      x=0  #色块中心x值
      c=0  #色块偏离中心程度
      d=0
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QQVGA)
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False)
      sensor.set_auto_gain(False) #关闭自动亮度增益,太暗了可以自行打开
      sensor.set_hmirror(True) #水平镜像,方便调试
      clock = time.clock()
      
      s1 = Servo(1) #P7 舵机
      s1.pulse_width(1500) #舵机初始化到中间位置
      
      
      uart = UART(3, 115200)
      
      while(True):
          img = sensor.snapshot()
      
      
          #查找色块,并过滤掉面积小于1200像素,且长小于30像素,宽小于40像素的色块
          blobs = img.find_blobs([red_threshold_01],x_stride=5, y_stride=15)
      
          if blobs:
              print('sum :', len(blobs)) #我没看懂
              output_str = json.dumps(blobs) #没看懂
              for b in blobs:
                  if b[2]>5 and b[3]>5: #过滤过大或者过小,根据实际修改
                     img.draw_rectangle(b.rect(),color=(0,0,0))  #根据色块大小画框
                     img.draw_cross(b.cx(), b.cy()) #根据色块中心点画十字架
                     x = b[5] #将cx赋值给x
                     c=abs(80-b[5]) #把cx与中心x值的差赋值给c
                     #下面为简单的识别舵机运动算法,具体根据实际调试修改参数,可以自行优化
                     if x > 82:
                         step=step-int((x-80)*1)
                         print('1:',step)
                         if -800 > step:
                             step=step+int((x-80)*1)
                             print('2:',step)
                     if x < 78:
                         tep=step+int((80-x)*1)
                         print('3:',step)
                         if step > 900:
                             step=step-int((80-x)*1)
                             print('4:',step)
                     s1.pulse_width(1500-step) #舵机旋转角度
                     d=1500-step
                     print('偏转量 :',step)
      
                     #若偏离程度较小则小车加速
                     if c < 10:
                         if d == 1500:
                             uart.write('fast\r')
                             print('jia su')
      
              #得到被测物的长和宽(用于测量目标物大小数值)
              #print('get_w :',b[2])
              #print('get_h :',b[3])
              #print('get_zx :',b[5])
      
      ```,
      这段代码实行的时候,无论怎么改变摄像头对红灯的方向,偏转量都没有变,求高手指导


    • 你先看一下x的值?