极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17907|回复: 0

串口指令问题

[复制链接]
发表于 2018-11-12 11:22:01 | 显示全部楼层 |阅读模式
求助下,我陀螺仪需要做个开机归零。我用给陀螺仪用CH304串口连电脑,在电脑上行用串口助手直接发送  FF AA 52 是可以看到陀螺仪校准归零。但是我用2560  写个发送串口指令的程序,陀螺仪不归零。求指教,不胜感激!
  1. const char zero[3] = {0xFF, 0xAA, 0x52};
  2. unsigned char Re_buf[11], counter, sign;
  3. float x , y, z;
  4. void setup() {
  5.   Serial.begin(9600);
  6.   Serial2.begin(115200);
  7.   delay(100);
  8.   Serial2.write(zero,3);
  9. //  Serial2.write(0xFF);
  10. //  Serial2.write(0xAA);
  11. //  Serial2.write(0x52);
  12. }
  13. void Rxyz()
  14. {
  15.   while (Serial2.available())
  16.   {
  17.     Re_buf[counter] = (unsigned char)Serial2.read();
  18.     if (counter == 0 && Re_buf[0] != 0x55)return;
  19.     counter++;
  20.     if (counter == 11)
  21.     {
  22.       counter = 0;
  23.       sign = 1;
  24.     }
  25.     if (sign)
  26.     {
  27.       sign = 0;
  28.       if (Re_buf[0] == 0x55 && Re_buf[1] == 0x53)
  29.       {
  30.         x = (short(Re_buf[3] << 8 | Re_buf[2])) / 32768.0 * 180;
  31.         y = (short(Re_buf[5] << 8 | Re_buf[4])) / 32768.0 * 180;
  32.         z = (short(Re_buf[7] << 8 | Re_buf[6])) / 32768.0 * 180;
  33.       }
  34.     }
  35.   }
  36. }
  37. void loop() {
  38.   Rxyz();
  39.   Serial.print("Z=");
  40.   Serial.println(z);
  41. //  Serial.write(zero, 1);
  42. //  Serial.write(zero, 2);
  43. //  Serial.write(zero, 3);
  44.   delay(200);
  45. }
复制代码
  
回复

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 03:35 , Processed in 0.039218 second(s), 17 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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