查看: 451|回复: 5

Nano和GY25软串口输出问题

[复制链接]
  • TA的每日心情
    开心
    2020-8-9 11:45
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    发表于 2020-2-21 16:33 | 显示全部楼层 |阅读模式
    请教下各位:Nano的板连接GY25的串口陀螺仪板软串口读取数据看着正常,但偶尔会有一个异常的数字蹦出请问这是为什么?程序和输出如下。请帮忙分析一下,谢谢!

    #include <SoftwareSerial.h>
    SoftwareSerial mySerial(10, 11);
    int YPR[3];
    unsigned char Re_buf[30],counter=0;
    unsigned char sign=0;
    //-----------------------------------------------------------
    void setup()
    {
      Serial.begin(115200);  
       mySerial.begin(115200);
       mySerial.listen();  
      delay(2000);   
      mySerial.write(0XA5);
      mySerial.write(0X55);   
      mySerial.write(0X13);    //初始化GY25Z,输出陀螺加速度和欧拉角
      mySerial.write(0X0D);
      delay(100);
      mySerial.write(0XA5);
      mySerial.write(0X56);    //初始化GY25Z,连续输出模式
      mySerial.write(0X02);    //初始化GY25Z,连续输出模式
      mySerial.write(0XFD);
      delay(100);  
    }
    void loop(){
        while (mySerial.available())
       {   
        Re_buf[counter]=(unsigned char)mySerial.read();
        if(counter==0&&Re_buf[0]!=0x5A) return;      // 检查帧头         
        counter++;      
        if(counter==23)                //接收到数据
         {   
           counter=0;                 //重新赋值,准备下一帧数据的接收
           sign=1;
          }      
        }
      if(sign)
      {     
         if(Re_buf[0]==0x5A&&Re_buf[1]==0x5A )        //检查帧头,帧尾
         {                 
                YPR[0]=(Re_buf[16]<<8|Re_buf[17])/100;   //合成数据,去掉小数点后2位
                YPR[1]=(Re_buf[18]<<8|Re_buf[19])/100;
                YPR[2]=(Re_buf[20]<<8|Re_buf[21])/100;

               Serial.print("  YPR:\t");
               Serial.print(YPR[2], DEC); Serial.print("\t"); //显示航向
               Serial.print(YPR[1], DEC); Serial.print("\t"); //显示俯仰角
               Serial.println(YPR[0], DEC);                    //显示横滚角            
       }
       sign=0;
      }
    }
    void serialEvent() {
      if(sign==0)
      while (Serial.available()) {   
        Re_buf[counter]=(unsigned char)Serial.read();
        if(counter==0&&Re_buf[0]!=0x5A) return;      // 检查帧头         
        counter++;      
        if(counter==17)                //接收到数据
        {   
           counter=0;                 //重新赋值,准备下一帧数据的接收
           sign=1;
        }      
      }
    }


    QQ图片20200221163020.png
  • TA的每日心情
    奋斗
    2019-12-25 10:13
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2020-2-21 17:55 | 显示全部楼层
    软串口在9600还行,115200这么高不稳定,数据出错的几率很大。这个数据情况已经很不错了~~~
  • TA的每日心情
    开心
    2020-8-9 11:45
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-2-22 09:06 | 显示全部楼层
    您好!我把程序里软串改为9600以后,就收不到数据了
  • TA的每日心情
    开心
    2020-8-9 11:45
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-2-22 09:50 | 显示全部楼层
    是这个问题现在输出非常稳定了谢谢师傅
  • TA的每日心情
    开心
    2020-8-11 10:22
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2020-8-1 21:03 | 显示全部楼层
    楼主,我想问问你的gy25咋读出角度的。
    我用的程序的没有响应
  • TA的每日心情
    开心
    2020-8-9 11:45
  • 签到天数: 11 天

    [LV.3]偶尔看看II

     楼主| 发表于 2020-8-7 14:51 | 显示全部楼层
    你就把我的程序复制上去,把波特率改为9600就可以了.这个程序是GY25不是GY25Z
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    Arduino UNO中文数据手册
    Arduino UNO中文数据手册
    2018.9.23重新翻译整理 转载请注明来自Arduino中文社区,并附本帖链接 本帖地址:http
    LabVIEW监控温度传感器
    LabVIEW监控温度传感器
    这里涉及 dht11 数字温度湿度传感器模块、TM1637数码显示模块、LabVIEW。 功能
    黑乌鸦的Arduino兵器库-----DS1302时钟模块
    黑乌鸦的Arduino兵器库---
    嗯 这是一个系列后期会罗列几乎所有的常见基础模块的demo所以 大家的回复将是我最大
    中文 字库 的8针 OLED 12864模块 arduino
    中文 字库 的8针 OLED 128
    屏幕电路SPI连线: 中文字库OLED Arduino UNO GND GND
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表