找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3891|回复: 2
打印 上一主题 下一主题
收起左侧

有人可以帮我看下为什么Arduino用软串口读不出来数据吗?用默认的可以,谢谢大佬

[复制链接]
跳转到指定楼层
楼主
ID:193233 发表于 2018-8-1 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <SoftwareSerial.h>
SoftwareSerial mySerial(12,13);//第12= RX,第13- TX
int YPR[3];
unsigned char Re_buf[8],counter=0;
unsigned char sign=0;


//-----------------------------------------------------------
void setup()
{
  Serial.begin(115200);
  mySerial.begin(115200);  
  delay(2000);   
  mySerial.write(0XA5);
  mySerial.write(0X52);    //初始化GY25,连续输出模式
}
//-------------------------------------------------------------
void loop() {
  mySerial.listen();
  if(sign)
  {  
     sign=0;
     if(Re_buf[0]==0xAA && Re_buf[7]==0x55)        //检查帧头,帧尾
     {                 
            YPR[0]=(Re_buf[1]<<8|Re_buf[2])/100;   //合成数据,去掉小数点后2位
            YPR[1]=(Re_buf[3]<<8|Re_buf[4])/100;
            YPR[2]=(Re_buf[5]<<8|Re_buf[6])/100;

            mySerial.print("航向:");
            mySerial.println(YPR[0]);      //显示航向

            mySerial.print("俯仰角:");
            mySerial.println(YPR[1]);      //显示航向

            mySerial.print("翻滚角:");
            mySerial.println(YPR[2]);      //显示航向
            delay(100);           
   }
  }
}
//---------------------------------------------------------------
void serialEvent() {
  while (mySerial.available()) {   
    Re_buf[counter]=(unsigned char)mySerial.read();
    if(counter==0&&Re_buf[0]!=0xAA) return;      // 检查帧头         
    counter++;      
    if(counter==8)                //接收到数据
    {   
       counter=0;                 //重新赋值,准备下一帧数据的接收
       sign=1;
    }      
  }
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:155507 发表于 2018-8-2 23:46 | 只看该作者
波特率设置低一些,设置成2400或者4800,我之前用软串口连结esp8266,软串口的误码率很高。
回复

使用道具 举报

板凳
ID:894800 发表于 2021-5-7 19:24 | 只看该作者
有些引脚作为软串口不具备收发功能。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表