GY89集成了三块不同的芯片,分别为:BMP180、L3GD20和LSM303DLH,作用分别是获取温度压强、三轴陀螺仪和加速度计的数据。以下通过把各个模块的数据输出到终端来测试GY89的功能。

  1. #include "mbed.h"
  2. #include "BMP180.h"//温度压强
  3. #include "L3GD20.h"//三轴陀螺仪
  4. #include "LSM303DLH.h"//加速度计
  5. #include "vector.h"//加速度计的向量类 包含xyz
  6.  
  7. //片选信号的引脚 默认使用BMP180 片选信号为10时使用L3GD20 片选信号为01时使用LSM303D
  8. DigitalOut cs1(PC_2);
  9. DigitalOut cs2(PC_3);
  10.  
  11. int main()
  12. {
  13.  
  14. /****************使用BMP180获取温度和压强***************************/
  15.  
  16. BMP180 bmp180(PB_9, PB_8);//实例化bmp180
  17.  
  18. float pressure, temperature;//用这两个变量存储获取到的压强和温度
  19.  
  20. bmp180.Initialize(64, BMP180_OSS_ULTRA_LOW_POWER);//初始化
  21.  
  22. while(1)
  23. {
  24. //bmp180获取数据
  25. if (bmp180.ReadData(&temperature, &pressure)){
  26. //将获得的数据输出到终端
  27. printf("温度: %f\n",temperature);
  28. printf("压强: %f\n",pressure);
  29. }
  30. wait(1);
  31. }
  32. /*****************使用BMP180获取温度和压强***************************/
  33.  
  34. /**************使用L3GD20获取三轴陀螺仪的数据数据*********************/
  35.  
  36. //设置片选信号
  37. cs1 = 1;
  38. cs2 = 0;
  39.  
  40. L3GD20 gyro(PB_9, PB_8);//实例化LSGD20
  41.  
  42. float gx,gy,gz;//用这三个变量存储xyz轴的数据
  43.  
  44. while(1){
  45.  
  46. //L3GD20获取数据
  47. if(gyro.read(&gx,&gy,&gz)){
  48.  
  49. //将获得的数据输出到终端
  50. printf("X: %f\n",gx);
  51. printf("Y: %f\n",gy);
  52. printf("Z: %f\n",gz);
  53.  
  54. }//end id
  55.  
  56. wait(0.1);
  57.  
  58. }//end while
  59. /**************使用L3GD20获取三轴陀螺仪的数据数据*********************/
  60.  
  61. /**************使用LSM303D获取加速度计和磁力计的数据*********************/
  62.  
  63. //设置片选信号
  64. cs1 = 0;
  65. cs2 = 1;
  66.  
  67. //向量类,里面包含xyz三个变量,用于存储加速度计和磁力计的xyz数据
  68. vector a;
  69. vector m;
  70.  
  71. LSM303DLH compass(PB_9, PB_8);
  72.  
  73. float hdg;
  74.  
  75. //初始化操作
  76. compass.setOffset(29.50, -0.50, 4.00);
  77. compass.setScale(1.00, 1.03, 1.21);
  78.  
  79. while(1) {
  80.  
  81. //获取数据
  82. compass.read(a,m);
  83.  
  84. //将获得的数据输出到终端
  85. printf("加速度计:X=%f/Y=%f/Z=%f\n",a.x,a.y,a.z);
  86. //printf("磁力计:X=%f/Y=%f/Z=%f\n",m.x,m.y,m.z);
  87.  
  88. wait(0.1);
  89. }
  90.  
  91. /**************使用LSM303D获取加速度计和磁力计的数据*********************/
  92.  
  93. }

  

室外温度:

电脑旁温度:

三轴陀螺仪:

加速度计:

GY89的使用的更多相关文章

  1. 使用GY89的BMP180模块获取温度和压强(海拔)

    最近要用一下GY89,GY89有三个模块,温度压强.加速度计.陀螺仪.通过不同的片选信号来选择. mbed库上都写好了,挺好的. 以下是自己的代码: #include "mbed.h&quo ...

  2. 使用c3p0与DBCP连接池,造成的MySql 8小时问题解决方案

    转自:http://blog.csdn.net/wangfayinn/article/details/24623575 c3p0数据库连接池mysql8小时 目录(?)[-] 基本问题解决 项目环境 ...

随机推荐

  1. CountDownLatch闭锁

    CountDownLatch是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待. 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完 ...

  2. pdb 源码索引符号服务器创建过程

    pdb是调试程序必不可少的东西,它保存着一个exe或dll的调试信息,对pdb进行源码索引可以快速找到软件对应该版本的代码,本文以subversion版本控制服务器进行介绍 一.需要安装的软件 win ...

  3. 011——VUE中使用object与array控制class

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  4. ARM体系结构总结

    特殊功能寄存器与外设绑定,通用寄存器是与CPU绑定. ARM是RISC架构 常用ARM汇编指令只有二三十条 ARM是低功耗CPU ARM的架构非常适合单片机.嵌入式.尤其是物联网领域:而服务器等高性能 ...

  5. 前端之CSS续集

    CSS:语法形式上由选择器+以及一条或多条声明组成:选择器查找到指定的html标签后,使用css属性设置html标签的样式: 一.css 语法形式: 二.使用步骤   1.引入css规则 2.使用cs ...

  6. AndroidManifest.xml activity属性设置大全

    1.android:allowTaskReparenting=["true"|"false"] 是否允许activity更换从属的任务,比如从短信息任务切换到浏 ...

  7. eclipse新建web项目

    方法/步骤     首先,你要先打开Eclipse软件,打开后在工具栏依次点击[File]>>>[New]>>>[Dynamic Web Project],这个就代 ...

  8. Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)

     我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. 首先介绍一个重要方法那就是requestWindowF ...

  9. How to use NSRequest in Delphi XE4

    //Demo How to use NSRequest..procedure TiOSWebBrowserService.DoNavigate(const URL: string);var NewUR ...

  10. Linux字符界面访问U盘

    首先查看U盘所在位置 fdisk -l 只需查看最后分区情况,例如找到U盘的位置为:/dev/sda1(视系统而定) 创建文件夹(用于挂载U盘内容) mkdir /mnt/usb 挂载 mount / ...