GY89集成了三块不同的芯片,分别为:BMP180、L3GD20和LSM303DLH,作用分别是获取温度压强、三轴陀螺仪和加速度计的数据。以下通过把各个模块的数据输出到终端来测试GY89的功能。
#include "mbed.h" #include "BMP180.h"//温度压强 #include "L3GD20.h"//三轴陀螺仪 #include "LSM303DLH.h"//加速度计 #include "vector.h"//加速度计的向量类 包含xyz //片选信号的引脚 默认使用BMP180 片选信号为10时使用L3GD20 片选信号为01时使用LSM303D DigitalOut cs1(PC_2); DigitalOut cs2(PC_3); int main() { /****************使用BMP180获取温度和压强***************************/ BMP180 bmp180(PB_9, PB_8);//实例化bmp180 float pressure, temperature;//用这两个变量存储获取到的压强和温度 bmp180.Initialize(64, BMP180_OSS_ULTRA_LOW_POWER);//初始化 while(1) { //bmp180获取数据 if (bmp180.ReadData(&temperature, &pressure)){ //将获得的数据输出到终端 printf("温度: %f ",temperature); printf("压强: %f ",pressure); } wait(1); } /*****************使用BMP180获取温度和压强***************************/ /**************使用L3GD20获取三轴陀螺仪的数据数据*********************/ //设置片选信号 cs1 = 1; cs2 = 0; L3GD20 gyro(PB_9, PB_8);//实例化LSGD20 float gx,gy,gz;//用这三个变量存储xyz轴的数据 while(1){ //L3GD20获取数据 if(gyro.read(&gx,&gy,&gz)){ //将获得的数据输出到终端 printf("X: %f ",gx); printf("Y: %f ",gy); printf("Z: %f ",gz); }//end id wait(0.1); }//end while /**************使用L3GD20获取三轴陀螺仪的数据数据*********************/ /**************使用LSM303D获取加速度计和磁力计的数据*********************/ //设置片选信号 cs1 = 0; cs2 = 1; //向量类,里面包含xyz三个变量,用于存储加速度计和磁力计的xyz数据 vector a; vector m; LSM303DLH compass(PB_9, PB_8); float hdg; //初始化操作 compass.setOffset(29.50, -0.50, 4.00); compass.setScale(1.00, 1.03, 1.21); while(1) { //获取数据 compass.read(a,m); //将获得的数据输出到终端 printf("加速度计:X=%f/Y=%f/Z=%f ",a.x,a.y,a.z); //printf("磁力计:X=%f/Y=%f/Z=%f ",m.x,m.y,m.z); wait(0.1); } /**************使用LSM303D获取加速度计和磁力计的数据*********************/ }
室外温度:
电脑旁温度:
三轴陀螺仪:
加速度计: