STMicroelectronics barometric pressure sensor library. This library modified from KenjiArai's LPS25H library.

Fork of LPS25H by Kenji Arai

Revision:
3:755ac86eb6fd
Parent:
1:5f21b0eac2c2
Child:
4:50be6522da7f
--- a/LPS22HB.cpp	Wed Nov 30 18:17:32 2016 +0000
+++ b/LPS22HB.cpp	Sun Mar 19 09:07:48 2017 +0000
@@ -19,38 +19,34 @@
 
 #include "LPS22HB.h"
 
-LPS22HB::LPS22HB (PinName p_sda, PinName p_scl, uint8_t addr) : _i2c(p_sda, p_scl)
+LPS22HB::LPS22HB (PinName p_sda, PinName p_scl, uint8_t addr)
+    :
+    i2c_p(new I2C(p_sda, p_scl)),
+    _i2c(*i2c_p)
 {
     LPS22HB_addr = addr;
-    //LPS22HB_mode = FIFO_BYPASS;
     init();
 }
 
-/*LPS22HB::LPS22HB (PinName p_sda, PinName p_scl, uint8_t addr, uint8_t mode) : _i2c(p_sda, p_scl)
+LPS22HB::LPS22HB (I2C& p_i2c, uint8_t addr)
+    :
+    i2c_p(NULL),
+    _i2c(p_i2c)
 {
     LPS22HB_addr = addr;
-    LPS22HB_mode = mode;
-    init();
-}*/
-
-LPS22HB::LPS22HB (I2C& p_i2c, uint8_t addr) : _i2c(p_i2c)
-{
-    LPS22HB_addr = addr;
-    //LPS22HB_mode = FIFO_BYPASS;
     init();
 }
 
-/*LPS22HB::LPS22HB (I2C& p_i2c, uint8_t addr, uint8_t mode) : _i2c(p_i2c)
+LPS22HB::~LPS22HB()
 {
-    LPS22HB_addr = addr;
-    LPS22HB_mode = mode;
-    init();
-}*/
+    if( NULL != i2c_p )
+        delete  i2c_p;
+}
 
 /////////////// Initialize ////////////////////////////////
 void LPS22HB::init(void)
 {
-    _i2c.frequency(400000);
+    //_i2c.frequency(400000);
     // Check acc is available of not
     dt[0] = LPS22HB_WHO_AM_I;
     _i2c.write(LPS22HB_addr, dt, 1, true);
@@ -63,32 +59,8 @@
         LPS22HB_ready = 0;
         return;     // acc chip is NOT on I2C line then terminate
     }
-    /*if (LPS22HB_mode == FIFO_HW_FILTER){
-        // Hardware digital filter
-        // AN4450 April 2014 Rev1 P20/26, Filter enabling and suggested configuration
-        dt[0] = LPS22HB_RES_CONF;
-        dt[1] = 0x05;
-        _i2c.write(LPS22HB_addr, dt, 2, false);
-        dt[0] = LPS22HB_FIFO_CTRL;
-        dt[1] = 0xdf;
-        _i2c.write(LPS22HB_addr, dt, 2, false);
-        dt[0] = LPS22HB_CTRL_REG2;
-        dt[1] = 0x40;
-        _i2c.write(LPS22HB_addr, dt, 2, false);
-        dt[0] = LPS22HB_CTRL_REG1;
-        dt[1] = 0x90;
-        _i2c.write(LPS22HB_addr, dt, 2, false);
-    } else {
-        dt[0] = LPS22HB_CTRL_REG2;
-        dt[1] = 0x0;
-        _i2c.write(LPS22HB_addr, dt, 2, false);       
-        dt[0] = LPS22HB_CTRL_REG1;
-        dt[1] = CR_STD_SET;
-        _i2c.write(LPS22HB_addr, dt, 2, false);
-    }*/
     
-    set_odr(LPS22HB_ODR_75HZ);
-    
+    set_odr(LPS22HB_ODR_1HZ);
 }
 
 /////////////// Start conv. and gwt all data //////////////
@@ -112,13 +84,25 @@
 /////////////// Read data from sensor /////////////////////
 float LPS22HB::pressure()
 {
-    return (float)press / 4096;
+    return (float)press / 4096.0f;
+}
+
+//add by user
+uint32_t LPS22HB::pressure_raw()
+{
+    return press;
 }
 
 /////////////// Read data from sensor /////////////////////
 float LPS22HB::temperature()
 {
-    return (float)temp / 480 + 42.5;
+    return (float)temp / 100.0f;
+}
+
+//add by user
+int16_t LPS22HB::temperature_raw()
+{
+    return temp;
 }
 
 /////////////// ID ////////////////////////////////////////