Fork of original LPS331 library Changed the I2C address to 0xBA

LPS331.cpp

Committer:
yasuyuki
Date:
2014-10-04
Revision:
0:ef4f624dc3ec
Child:
1:f70e671b008f

File content as of revision 0:ef4f624dc3ec:

//**********************
// LPS331.cpp for mbed
//
// LPS331 barometer(P0_5,P0_4);
// or
// I2C i2c(P0_5,P0_4);
// LPS331 barometer(i2c);
//
// (C)Copyright 2014 All rights reserved by Y.Onodera
// http://einstlab.web.fc2.com
//**********************

#include "mbed.h"
#include "LPS331.h"

LPS331::LPS331 (PinName sda, PinName scl) : _i2c(sda, scl) {
    init();
}
LPS331::LPS331 (I2C& p_i2c) : _i2c(p_i2c) {
    init();
}

void LPS331::put(unsigned char a, unsigned char b)
{
    buf[0]=a;
    buf[1]=b;
    _i2c.write(LPS331_ADDR, buf, 2);
}


void LPS331::get(unsigned char a)
{
    buf[0] = a;
    _i2c.write(LPS331_ADDR, buf, 1, true); // no stop, repeated
    _i2c.read( LPS331_ADDR, buf, 1);

}

long LPS331::value()
{

    // get press_high
    get(LPS331_PRESS_OUT_H);
    //press=buf[0]*0x10000;
    press.byte.UB=buf[0];
    // get tpress_low
    get(LPS331_PRESS_OUT_L);
    //press+=buf[0]*0x100;
    press.byte.HB=buf[0];
    // get press_xl
    get(LPS331_PRESS_POUT_XL_REH);
    //press+=buf[0];
    press.byte.LB=buf[0];
    return press.Val;
    
}

void LPS331::init()
{
    // Power ON Cycle=1Hz
    put(LPS331_CTRL_REG1, 0x90);
}