LPS25H library
Dependents: mbed_LPS25H GR-PEACH_TAMORI
See http://developer.mbed.org/users/yasuyuki/notebook/LPS25H/
Diff: LPS25H.cpp
- Revision:
- 0:0d2babe81a04
diff -r 000000000000 -r 0d2babe81a04 LPS25H.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LPS25H.cpp Sun Oct 12 02:42:32 2014 +0000 @@ -0,0 +1,83 @@ +//********************** +// LPS25H.cpp for mbed +// +// LPS25H lps25h(P0_5,P0_4); +// or +// I2C i2c(P0_5,P0_4); +// LPS25H lps25h(i2c); +// +// (C)Copyright 2014 All rights reserved by Y.Onodera +// http://einstlab.web.fc2.com +//********************** + +#include "mbed.h" +#include "LPS25H.h" + +LPS25H::LPS25H (PinName sda, PinName scl) : _i2c(sda, scl) { + init(); +} +LPS25H::LPS25H (I2C& p_i2c) : _i2c(p_i2c) { + init(); +} + +void LPS25H::put(unsigned char a, unsigned char b) +{ + buf[0]=a; + buf[1]=b; + _i2c.write(LPS25H_ADDR, buf, 2); +} + + +void LPS25H::get(unsigned char a) +{ + buf[0] = a; + _i2c.write(LPS25H_ADDR, buf, 1, true); // no stop, repeated + _i2c.read( LPS25H_ADDR, buf, 1); + +} + +long LPS25H::pressure() +{ + + // XL first and H last + // get press_xl + get(LPS25H_PRESS_POUT_XL_REH); + press.byte.LB=buf[0]; + // get tpress_low + get(LPS25H_PRESS_OUT_L); + press.byte.HB=buf[0]; + // get press_high + get(LPS25H_PRESS_OUT_H); + press.byte.UB=buf[0]; + return press.Val; + + // hPa = press.Val / 4096 + // Pa = press.Val / 40.96 +} + + +short LPS25H::temperature() +{ + + // L first and H last + // get tpress_low + get(LPS25H_TEMP_OUT_L); + temp.byte.LB=buf[0]; + // get press_high + get(LPS25H_TEMP_OUT_H); + temp.byte.HB=buf[0]; + return temp.S; + + // C = 42.5 + temp.S / 480 + // range:0 to 80C + // accuracy:+-2C +} + + +void LPS25H::init() +{ + // Power ON Cycle=1Hz + put(LPS25H_CTRL_REG1, 0x90); +} + +