找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

【Arduino】168种传感器系列实验(152)---GY-25串口倾斜度模块

查看数: 5191 | 评论数: 30 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-12-10 12:08

正文摘要:

本帖最后由 eagler8 于 2020-12-10 16:25 编辑 37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定 ...

回复

ID:513258 发表于 2020-12-25 13:11
ID:513258 发表于 2020-12-25 12:01
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
  3.   实验一百五十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050
  4.   使用步骤:
  5.   1.先下载GY25_uart程序至arduino
  6.   2.再接上GY25模块
  7.   3.按复位按键
  8.   4.打开串口,波特率115200
  9.   5、接线
  10.   GY25                arduino uno
  11.   VCC----------------------VCC
  12.   RX-----------------------TX
  13.   TX-----------------------RX
  14.   GND----------------------GND
  15.   ---------------------------------------
  16.   IICLCD2004           arduino uno
  17.   VCC----------------------VCC
  18.   SCL----------------------A5
  19.   SDA----------------------A4
  20.   GND----------------------GND
  21.   实验之二:IICLCD2004显示动态角度数值
  22. */

  23. #include <Wire.h>
  24. #include <LiquidCrystal_I2C.h>
  25. int YPR[3];
  26. unsigned char Re_buf[8], counter = 0;
  27. unsigned char sign = 0;
  28. int led = 13;
  29. LiquidCrystal_I2C lcd(0x27, 20, 4); // set the LCD address to 0x20 for a 20 chars and 4 line display

  30. //-----------------------------------------------------------
  31. void setup()
  32. {
  33.   lcd.init();                      // initialize the lcd
  34.   // Print a message to the LCD.
  35.   Serial.begin(115200);
  36.   delay(2000);
  37.   Serial.write(0XA5);
  38.   Serial.write(0X52);    //初始化GY25,连续输出模式
  39.   lcd.backlight();
  40.   lcd.setCursor(0, 0);    //I2C接口LCD2004显示初始值
  41.   lcd.print("Yaw:");
  42.   lcd.setCursor(0, 1);
  43.   lcd.print("Pitch:");
  44.   lcd.setCursor(0, 2);
  45.   lcd.print("Roll:");
  46. }
  47. //-------------------------------------------------------------
  48. void loop() {
  49.   if (sign)
  50.   {
  51.     sign = 0;
  52.     if (Re_buf[0] == 0xAA && Re_buf[7] == 0x55)   //检查帧头,帧尾
  53.     {
  54.       YPR[0] = (Re_buf[1] << 8 | Re_buf[2]) / 100; //合成数据,去掉小数点后2位
  55.       YPR[1] = (Re_buf[3] << 8 | Re_buf[4]) / 100;
  56.       YPR[2] = (Re_buf[5] << 8 | Re_buf[6]) / 100;

  57.       lcd.setCursor(4, 0);
  58.       lcd.print("    ");
  59.       lcd.setCursor(4, 0);
  60.       lcd.print(YPR[0]);      //显示航向

  61.       lcd.setCursor(6, 1);
  62.       lcd.print("    ");
  63.       lcd.setCursor(6, 1);   //显示俯仰角
  64.       lcd.print(YPR[1]);

  65.       lcd.setCursor(5, 2);
  66.       lcd.print("    ");
  67.       lcd.setCursor(5, 2);    //显示横滚角
  68.       lcd.print(YPR[2]);
  69.       delay(100);
  70.     }
  71.   }
  72. }
  73. //----------------------------------------------------------
  74. void serialEvent() {
  75.   while (Serial.available()) {
  76.     Re_buf[counter] = (unsigned char)Serial.read();
  77.     if (counter == 0 && Re_buf[0] != 0xAA) return; // 检查帧头
  78.     counter++;
  79.     if (counter == 8)             //接收到数据
  80.     {
  81.       counter = 0;               //重新赋值,准备下一帧数据的接收
  82.       sign = 1;
  83.     }
  84.   }
  85. }
复制代码


ID:513258 发表于 2020-12-25 10:53
  1. /*
  2.   【Arduino】168种传感器模块系列实验(资料代码+图形编程+仿真编程)
  3.   实验一百五十二:GY-25 串口直接输出角度数据 倾斜度角度传感器模块 MPU-6050
  4.   使用步骤:
  5.   1.先下载GY25_uart程序至arduino
  6.   2.再接上GY25模块
  7.   3.按复位按键
  8.   4.打开串口,波特率115200
  9.   5、接线
  10.   GY25                arduino uno
  11.   VCC----------------------VCC
  12.   RX-----------------------TX
  13.   TX-----------------------RX
  14.   GND----------------------GND
  15.   实验之一:串口显示动态角度数值
  16. */

  17. #include <Wire.h>
  18. int YPR[3];
  19. unsigned char Re_buf[8], counter = 0;
  20. unsigned char sign = 0;
  21. int led = 13;

  22. //-----------------------------------------------------------
  23. void setup()
  24. {
  25.   Serial.begin(115200);
  26.   delay(2000);
  27.   Serial.write(0XA5);
  28.   Serial.write(0X52);    //初始化GY25,连续输出模式
  29. }
  30. //-------------------------------------------------------------
  31. void loop() {
  32.   if (sign)
  33.   {
  34.     sign = 0;
  35.     if (Re_buf[0] == 0xAA && Re_buf[7] == 0x55)   //检查帧头,帧尾
  36.     {
  37.       YPR[0] = (Re_buf[1] << 8 | Re_buf[2]) / 100; //合成数据,去掉小数点后2位
  38.       YPR[1] = (Re_buf[3] << 8 | Re_buf[4]) / 100;
  39.       YPR[2] = (Re_buf[5] << 8 | Re_buf[6]) / 100;
  40.       Serial.print("YPR:\t");
  41.       Serial.print(YPR[0], DEC); Serial.print("\t"); //显示航向
  42.       Serial.print(YPR[1], DEC); Serial.print("\t"); //显示俯仰角
  43.       Serial.println(YPR[2], DEC);                    //显示横滚角
  44.       delay(50);
  45.     }
  46.   }
  47. }
  48. //---------------------------------------------------------------
  49. void serialEvent() {
  50.   while (Serial.available()) {
  51.     Re_buf[counter] = (unsigned char)Serial.read();
  52.     if (counter == 0 && Re_buf[0] != 0xAA) return; // 检查帧头
  53.     counter++;
  54.     if (counter == 8)             //接收到数据
  55.     {
  56.       counter = 0;               //重新赋值,准备下一帧数据的接收
  57.       sign = 1;
  58.     }
  59.   }
  60. }
复制代码


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

Powered by 单片机教程网

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