PLANET-Q LPS22HB Library
Dependents: IZU2020_AVIONICS qqq_izu_main_test IZU2020_AVIONICS Hybrid_OB2021_MAIN
Diff: PQLPS22HB.h
- Revision:
- 1:e77331b61ce6
- Parent:
- 0:9b51ce752415
- Child:
- 2:58c7afebd25b
--- a/PQLPS22HB.h Tue Dec 17 09:11:42 2019 +0000 +++ b/PQLPS22HB.h Tue Dec 17 14:18:04 2019 +0000 @@ -3,29 +3,89 @@ #define LPS22HB_ADDR_HIGH 0b1011101<<1 #define LPS22HB_ADDR_LOW 0b1011100<<1 -#define WHO_AM_I 0x0F -#define CTRL_REG1 0x10 -#define PRESS_XL 0x28 -#define TEMP_L 0x2B +#define LPS22HB_WHO_AM_I 0x0F +#define LPS22HB_CTRL_REG1 0x10 +#define LPS22HB_PRESS_XL 0x28 +#define LPS22HB_TEMP_L 0x2B + +/** LPS22HBのライブラリ + * @code +#include "mbed.h" +#include "PQLPS22HB.h" + +Serial pc(USBTX, USBRX, 115200); + +I2C i2c(p9, p10); + +LPS22HB lps(i2c, SA0_HIGH); + +float press; +float temp; -typedef enum{ - SA0_HIGH = LPS22HB_ADDR_HIGH, - SA0_LOW = LPS22HB_ADDR_LOW -}SA0_t; +int main() { + lps.begin(); + while(1) { + if(lps.test()){ + lps.read(&press, &temp); + pc.printf("%f\t%f", press, temp); + } + else { + pc.printf("[ FAIL ] LPS22HB cannot be reached.\r\n"); + } + } +} + * @endcode + */ +class LPS22HB +{ +public: + typedef enum { + SA0_HIGH = LPS22HB_ADDR_HIGH, + SA0_LOW = LPS22HB_ADDR_LOW + } SA0_t; -class LPS22HB{ private: I2C *_i2c; int _addr; char cmd[2]; char buff[6]; - + public: + /** + * @param i2c I2Cのインスタンスへの参照 + * @param SA0 SA0ピンのH/Lレベル + */ LPS22HB(I2C &i2c, SA0_t SA0); + + /** + * センサ動作開始 + */ void begin(); + + /** + * センサ通信テスト + * @retval true 通信成功 + * @retval false 通信失敗 + */ bool test(); + + /** + * 測定値の読み取り + * @param press 気圧を格納する変数 + * @param temp 温度を格納する変数 + */ void read(float *press, float *temp); + + /** + * 気圧測定値の読み取り + * @param press 気圧を格納する変数 + */ void read_press(float *press); + + /** + * 温度測定値の読み取り + * @param temp 温度を格納する変数 + */ void read_temp(float *temp); };