LPS25Hのライブラリ(i2C)です

Dependencies:   mbed

Dependents:   quto_LPS25H_sample4

LPS25H.cpp

Committer:
PQUTO
Date:
2017-01-20
Revision:
0:028338208ba1

File content as of revision 0:028338208ba1:

#include "mbed.h"
#include "LPS25H.h"


//Serial pc(USBTX, USBRX); //tx, rx


MyLPS25H::MyLPS25H(PinName SDA, PinName SCL) : _SDA(SDA), _SCL(SCL){
   // I2C i2c(_SDA, _SCL);
    }

void MyLPS25H::SetPress()
{
    I2C i2c(_SDA, _SCL);    // sda, scl
    char cmd[2];
    cmd[0] = WHO_AM_I;
    i2c.write(SLV_WRITE, cmd, 1);
    i2c.read(SLV_READ, cmd, 1);
    char check[1];
    check[0] = 0xBD;

        
    if(cmd[0] == check[0]){
        //pc.printf("LPS25H   OK\r\n");
    }else{
        //pc.printf("LPS25H   NG\r\n");
    }        
    
    cmd[0] = CTRL_REG1;
    cmd[1] = 0xC0;
    i2c.write(SLV_WRITE, cmd, 2);
}

float MyLPS25H::GetPress()
{
    I2C i2c(_SDA, _SCL);    // sda, scl
    //char cmd[2];
    char cmd_H[2];
    char cmd_L[2];
    char cmd_XL[2];
    float Pressure = 0;
        
    while(1)
    {
        
    cmd_XL[0] = PRESS_OUT_XL;
    i2c.write(SLV_WRITE, cmd_XL, 1);
    i2c.read(SLV_READ, cmd_XL, 1);
    
    cmd_L[0] = PRESS_OUT_L;
    i2c.write(SLV_WRITE, cmd_L, 1);
    i2c.read(SLV_READ, cmd_L, 1);
    
    cmd_H[0] = PRESS_OUT_H;
    i2c.write(SLV_WRITE, cmd_H, 1);
    i2c.read(SLV_READ, cmd_H, 1);
    
    unsigned long Press_H = 0, Press_L = 0, Press_XL = 0;
    Press_XL = (long)cmd_XL[0];
    Press_L = (long)cmd_L[0];
    Press_H = (long)cmd_H[0];
   // Pressure = (cmd_H[0]<<20 | cmd_H[1]<<16 | cmd_L[0]<<12 | cmd_L[1]<<8 | cmd_XL[0]<<4 | cmd_XL[1])/4096;
    Pressure = (float)(Press_H << 16 | Press_L << 8 | Press_XL);
    return Pressure/4096;
    }
    
}