• GY89的使用


    GY89集成了三块不同的芯片,分别为:BMP180L3GD20LSM303DLH,作用分别是获取温度压强、三轴陀螺仪和加速度计的数据。以下通过把各个模块的数据输出到终端来测试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获取加速度计和磁力计的数据*********************/     
        
        
    }
    

      

    室外温度:

    电脑旁温度:

    三轴陀螺仪:

    加速度计:

  • 相关阅读:
    将博客搬至CSDN
    模板:abs用法
    《CLR via C#》读书笔记--基元类型、引用类型和值类型
    入门鼠标右键事件(快捷菜单)
    C#委托学习
    广播最佳实践---实现强制下线
    android动态注册监听网络变化异常
    码流识别与传输
    对最近的RTP和H264学习进行总结整理-04.20
    H264解码学习-2015.04.16
  • 原文地址:https://www.cnblogs.com/wzben/p/5107912.html
Copyright © 2020-2023  润新知