気圧センサLPS22HBのライブラリ

Dependents:   Hybrid_IZU2021_MAIN_OS5 Hybrid_IZU2021_MISSION_v2 Hybrid_IZU2021_MAIN Hybrid_IZU2021_MISSION

Revision:
0:9a7d5d7e63be
Child:
1:fdde28032fb5
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PQ_LPS22HB.cpp	Tue Dec 15 15:37:50 2020 +0000
@@ -0,0 +1,50 @@
+#include "mbed.h"
+#include "PQ_LPS22HB.h"
+
+LPS22HB :: LPS22HB(I2C &i2c, SA0_t SA0)
+{
+    _addr = SA0;
+    _i2c = &i2c;
+    _i2c -> frequency(400000);
+}
+
+void LPS22HB :: begin()
+{
+    cmd[0] = LPS22HB_CTRL_REG1;
+    cmd[1] = 0x40;
+    _i2c -> write(_addr, cmd, 2);
+}
+
+bool LPS22HB :: test()
+{
+    cmd[0] = LPS22HB_WHO_AM_I;
+    _i2c -> write(_addr, cmd, 1);
+    _i2c -> read(_addr, buff, 1);
+    if(buff[0] == 0xB1) {
+        return true;
+    } else {
+        return false;
+    }
+}
+
+void LPS22HB :: read(float *press, float *temp)
+{
+    read_press(press);
+    read_temp(temp);
+}
+
+void LPS22HB :: read_press(float *press)
+{
+    cmd[0] = LPS22HB_PRESS_XL;
+    _i2c -> write(_addr, cmd, 1);
+    _i2c -> read(_addr, buff, 3);
+    *press = (int)(buff[0] | buff[1] << 8 | buff[2] << 16) / 4096.0f;
+}
+
+void LPS22HB :: read_temp(float *temp)
+{
+    cmd[0] = LPS22HB_TEMP_L;
+    _i2c -> write(_addr, cmd, 1);
+    _i2c -> read(_addr, buff, 2);
+    *temp = (short)(buff[0] | buff[1] << 8) * 0.01;
+}
\ No newline at end of file