导航

    • 登录
    • 搜索
    • 版块
    • 产品
    • 教程
    • 论坛
    • 淘宝
    1. 主页
    2. 3fkd
    3
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 帖子
    • 楼层
    • 最佳
    • 群组

    3fkd

    @3fkd

    0
    声望
    1
    楼层
    468
    资料浏览
    0
    粉丝
    0
    关注
    注册时间 最后登录

    3fkd 关注

    3fkd 发布的帖子

    • openmv发送字符给51,波特率等都调好了,51接收的却不是该字符?

      这是openmv的代码(是教程里的代码,加了稍微的匹配修改)

      # Blob Detection and uart transport
      import sensor, image, time
      from pyb import UART
      import json
      # For color tracking to work really well you should ideally be in a very, very,
      # very, controlled enviroment where the lighting is constant...
      yellow_threshold   = (0, 53, -118, 126, -115, -15)
      # You may need to tweak the above settings for tracking green things...
      # Select an area in the Framebuffer to copy the color settings.
      
      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.
      
      uart = UART(3, 9600)
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob.pixels() > max_size:
                  max_blob=blob
                  max_size = blob.pixels()
          return max_blob
      
      while(True):
          img = sensor.snapshot() # Take a picture and return the image.
      
          blobs = img.find_blobs([yellow_threshold])
          if blobs:
              max_blob=find_max(blobs)
              print('sum :', len(blobs))
              img.draw_rectangle(max_blob.rect())
              img.draw_cross(max_blob.cx(), max_blob.cy())
              
              if max_blob.cx()<=75: //当色块在左边时,是传送的数据为‘a’,下面以此类推
      ,          b='a'
              if max_blob.cx()>=85:
                b='b'
           #  if (max_blob.cx()>75 and max_blob.cx()<85)  
           #    b='c'
              output_str="%d" % (max_blob.cx()) #方式1
              #output_str=json.dumps([max_blob.cx(),max_blob.cy()]) #方式2
              
              print(max_blob.cx())
              print('you send:',  b)
              uart.write(b)
          else:
              print('not found!')
      
      

      这是51的代码(P2_0等是led灯,P2_0=0亮,P2_0=1灭,但是接收到串口的数据时,结果都不亮,没有根据语句实现,很大可能是接收到的数据不是想的那个,该怎么解决呢)
      #include<reg52.h>
      #define uchar unsigned char
      #define uint unsigned int
      char i;
      char flag,c,x;
      sbit P2_0=P2^0;
      sbit P2_1=P2^1;
      sbit P2_2=P2^2;
      sbit P2_3=P2^3;
      sbit P2_4=P2^4;

      void delay(unsigned char i)
      {
      while(i--);
      }//延时函数
      void delay1(unsigned int k)
      {
      unsigned int x,y;
      for(x=0;x<k;x++)
      for(y=0;y<2000;y++);
      }
      void init()//赋初值,定义串行口的标志位以及数码管标志位
      {
      TMOD=0x20;
      TH1=0xfd; //使得波特率为9600,和openmv一致
      TL1=0xfd;
      TR1=1;
      REN=1;
      SM0=0;
      SM1=1;
      EA=1;
      ES=1;
      }
      void main()
      {
      flag=0;
      init();
      P2_0=1;
      P2_1=1;
      P2_2=1;
      P2_3=1;
      P2_4=1;
      while(1)
      {

      P2_0=1;//灯灭
      P2_1=1;
      P2_2=1;

      }
      }
      void ser() interrupt 4//串口中断
      {
      RI=0;
      x=SBUF;//x是接收的数据
      if(x=='a')//如果接收到‘a’则亮,下面同理
      { P2_0=0;}
      if(x=='b')
      { P2_1=0;}
      if(x=='c')
      { P2_2=0;}
      else
      {P2_4=~P2_4;}

      }

      发布在 OpenMV Cam
      3
      3fkd