美文网首页我爱编程
基于arduino的串口通信学习

基于arduino的串口通信学习

作者: 秀外惠中没有秀外 | 来源:发表于2016-03-06 20:31 被阅读0次

    一、串口通信格式

    START (起始位) D0~D7(数据位)P(校验位) STOP(停止位)

    二、串口通信步骤

    1、配置波特率                                                         serial[x].begin(speed);

    2、查看串口缓冲中是否有数据(输出可忽略)             serial[x].available();    //有效数据

                                                                                 serial[x].read();          //读取数据

    3、读取或写入串行数据                                             serial[x].print(data);

    三、程序范例

    unsigned char Re_buf[11],counter=0;//定义数组储存数据

    unsigned char sign=0;

    float a[3],w[3],angle[3],T;

    void setup() {Serial.begin(9600);}

    void loop() {

    if(sign)

    sign = 0;

    if(Re_buf[0]==0x55)  //包头,确认数据是否传入

    {switch(Re_buf[1]) // 判断获取加速度仪何种数据

    {case 0x51: //加速度

    a[0]=(short(Re_buf[3]<<8|Re_buf[2]))/32768.0*16;

    a[1]=(short(Re_buf[5]<<8|Re_buf[4]))/32768.0*16;

    a[2]=(short(Re_buf[7]<<8|Re_buf[6]))/32768.0*16;

    T = (short(Re_buf[9]<<8|Re_buf[8]))/340.0+36.25;break;

    case 0x52: //角速度

    w[0]=(short(Re_buf[3]<<8|Re_buf[2]))/32768.0*16;

    w[1]=(short(Re_buf[5]<<8|Re_buf[4]))/32768.0*16;

    w[2]=(short(Re_buf[7]<<8|Re_buf[6]))/32768.0*16;

    T = (short(Re_buf[9]<<8|Re_buf[8]))/340.0+36.25;break;

    case 0x53: //角度

    angle[0]=(short(Re_buf[3]<<8|Re_buf[2]))/32768.0*16;

    angle[1]=(short(Re_buf[5]<<8|Re_buf[4]))/32768.0*16;

    angle[2]=(short(Re_buf[7]<<8|Re_buf[6]))/32768.0*16;

    T = (short(Re_buf[9]<<8|Re_buf[8]))/340.0+36.25;break;   //该部分公式有待考证

    /*case 0x53:

    * angle[0]=(short(Re_buf[3]<<8|Re_buf[2]))/32.8   //Vx

    * angle[1]=(short(Re_buf[5]<<8|Re_buf[4]))/32.8   //Vy

    * angle[2]=(short(Re_buf[7]<<8|Re_buf[6]))/32.8   //Vz

    */}}}

    void serialEvent{

    while(Serial.available()){   //CRC循环冗余算法

    Re_buf[counter]=(unsigned char)Serial.read();

    if(counter==0&&Re_buf[0]!=0x55) return;   //if the first data is not the head

    counter++;

    if(counter==11)     //have receive all the data

    {counter=0;sign=1;}

    }}

    相关文章

      网友评论

        本文标题:基于arduino的串口通信学习

        本文链接:https://www.haomeiwen.com/subject/hixgkttx.html