GY89的使用
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\n",temperature);
printf("压强: %f\n",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\n",gx);
printf("Y: %f\n",gy);
printf("Z: %f\n",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\n",a.x,a.y,a.z);
//printf("磁力计:X=%f/Y=%f/Z=%f\n",m.x,m.y,m.z);
wait(0.1);
}
/**************使用LSM303D获取加速度计和磁力计的数据*********************/
}
室外温度:

电脑旁温度:

三轴陀螺仪:

加速度计:


浙公网安备 33010602011771号