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

Dependents:   Hybrid_IZU2021_MAIN_OS5 Hybrid_IZU2021_MISSION_v2 Hybrid_IZU2021_MAIN Hybrid_IZU2021_MISSION

Committer:
tanahashi
Date:
Tue Dec 15 15:37:50 2020 +0000
Revision:
0:9a7d5d7e63be
Child:
1:fdde28032fb5
first commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tanahashi 0:9a7d5d7e63be 1 #ifndef PQ_LPS22HB_H
tanahashi 0:9a7d5d7e63be 2 #define PQ_LPS22HB_H
tanahashi 0:9a7d5d7e63be 3
tanahashi 0:9a7d5d7e63be 4 #define LPS22HB_ADDR_HIGH 0b1011101<<1
tanahashi 0:9a7d5d7e63be 5 #define LPS22HB_ADDR_LOW 0b1011100<<1
tanahashi 0:9a7d5d7e63be 6 #define LPS22HB_WHO_AM_I 0x0F
tanahashi 0:9a7d5d7e63be 7 #define LPS22HB_CTRL_REG1 0x10
tanahashi 0:9a7d5d7e63be 8 #define LPS22HB_PRESS_XL 0x28
tanahashi 0:9a7d5d7e63be 9 #define LPS22HB_TEMP_L 0x2B
tanahashi 0:9a7d5d7e63be 10
tanahashi 0:9a7d5d7e63be 11 /** LPS22HBのライブラリ
tanahashi 0:9a7d5d7e63be 12 * @code
tanahashi 0:9a7d5d7e63be 13 #include "mbed.h"
tanahashi 0:9a7d5d7e63be 14 #include "PQ_LPS22HB.h"
tanahashi 0:9a7d5d7e63be 15
tanahashi 0:9a7d5d7e63be 16 Serial pc(USBTX, USBRX, 115200);
tanahashi 0:9a7d5d7e63be 17
tanahashi 0:9a7d5d7e63be 18 I2C i2c(p9, p10);
tanahashi 0:9a7d5d7e63be 19
tanahashi 0:9a7d5d7e63be 20 LPS22HB lps(i2c, LPS22HB::SA0_HIGH);
tanahashi 0:9a7d5d7e63be 21
tanahashi 0:9a7d5d7e63be 22 float press, temp;
tanahashi 0:9a7d5d7e63be 23
tanahashi 0:9a7d5d7e63be 24 int main() {
tanahashi 0:9a7d5d7e63be 25 lps.begin();
tanahashi 0:9a7d5d7e63be 26 while(1) {
tanahashi 0:9a7d5d7e63be 27 if(lps.test()){
tanahashi 0:9a7d5d7e63be 28 lps.read(&press, &temp);
tanahashi 0:9a7d5d7e63be 29 pc.printf("%f\t%f\r\n", press, temp);
tanahashi 0:9a7d5d7e63be 30 }
tanahashi 0:9a7d5d7e63be 31 else {
tanahashi 0:9a7d5d7e63be 32 pc.printf("ERROR!!\r\n");
tanahashi 0:9a7d5d7e63be 33 }
tanahashi 0:9a7d5d7e63be 34 }
tanahashi 0:9a7d5d7e63be 35 }
tanahashi 0:9a7d5d7e63be 36 * @endcode
tanahashi 0:9a7d5d7e63be 37 */
tanahashi 0:9a7d5d7e63be 38 class LPS22HB
tanahashi 0:9a7d5d7e63be 39 {
tanahashi 0:9a7d5d7e63be 40 public:
tanahashi 0:9a7d5d7e63be 41 typedef enum {
tanahashi 0:9a7d5d7e63be 42 SA0_HIGH = LPS22HB_ADDR_HIGH,
tanahashi 0:9a7d5d7e63be 43 SA0_LOW = LPS22HB_ADDR_LOW
tanahashi 0:9a7d5d7e63be 44 } SA0_t;
tanahashi 0:9a7d5d7e63be 45
tanahashi 0:9a7d5d7e63be 46 private:
tanahashi 0:9a7d5d7e63be 47 I2C *_i2c;
tanahashi 0:9a7d5d7e63be 48 int _addr;
tanahashi 0:9a7d5d7e63be 49 char cmd[2];
tanahashi 0:9a7d5d7e63be 50 char buff[6];
tanahashi 0:9a7d5d7e63be 51
tanahashi 0:9a7d5d7e63be 52 public:
tanahashi 0:9a7d5d7e63be 53 /**
tanahashi 0:9a7d5d7e63be 54 * @param i2c I2Cのインスタンスへの参照
tanahashi 0:9a7d5d7e63be 55 * @param SA0 SA0ピンのH/Lレベル
tanahashi 0:9a7d5d7e63be 56 */
tanahashi 0:9a7d5d7e63be 57 LPS22HB(I2C &i2c, SA0_t SA0);
tanahashi 0:9a7d5d7e63be 58
tanahashi 0:9a7d5d7e63be 59 /**
tanahashi 0:9a7d5d7e63be 60 * センサ動作開始
tanahashi 0:9a7d5d7e63be 61 */
tanahashi 0:9a7d5d7e63be 62 void begin();
tanahashi 0:9a7d5d7e63be 63
tanahashi 0:9a7d5d7e63be 64 /**
tanahashi 0:9a7d5d7e63be 65 * センサ通信テスト
tanahashi 0:9a7d5d7e63be 66 * @retval true 通信成功
tanahashi 0:9a7d5d7e63be 67 * @retval false 通信失敗
tanahashi 0:9a7d5d7e63be 68 */
tanahashi 0:9a7d5d7e63be 69 bool test();
tanahashi 0:9a7d5d7e63be 70
tanahashi 0:9a7d5d7e63be 71 /**
tanahashi 0:9a7d5d7e63be 72 * 測定値の読み取り
tanahashi 0:9a7d5d7e63be 73 * @param press 気圧を格納する変数
tanahashi 0:9a7d5d7e63be 74 * @param temp 温度を格納する変数
tanahashi 0:9a7d5d7e63be 75 */
tanahashi 0:9a7d5d7e63be 76 void read(float *press, float *temp);
tanahashi 0:9a7d5d7e63be 77
tanahashi 0:9a7d5d7e63be 78 /**
tanahashi 0:9a7d5d7e63be 79 * 気圧測定値の読み取り
tanahashi 0:9a7d5d7e63be 80 * @param press 気圧を格納する変数
tanahashi 0:9a7d5d7e63be 81 */
tanahashi 0:9a7d5d7e63be 82 void read_press(float *press);
tanahashi 0:9a7d5d7e63be 83
tanahashi 0:9a7d5d7e63be 84 /**
tanahashi 0:9a7d5d7e63be 85 * 温度測定値の読み取り
tanahashi 0:9a7d5d7e63be 86 * @param temp 温度を格納する変数
tanahashi 0:9a7d5d7e63be 87 */
tanahashi 0:9a7d5d7e63be 88 void read_temp(float *temp);
tanahashi 0:9a7d5d7e63be 89 };
tanahashi 0:9a7d5d7e63be 90
tanahashi 0:9a7d5d7e63be 91 #endif