LPS25HをSPIで使えるようにしたライブラリです。 ・気圧 ・温度 ・高度(気圧と温度から) が取得できます。 FIFOも使えます。
LPS25H_spi.h@2:7ea8c77e960c, 2020-03-17 (annotated)
- Committer:
- Sigma884
- Date:
- Tue Mar 17 12:39:22 2020 +0000
- Revision:
- 2:7ea8c77e960c
- Parent:
- 0:7bbdfc4610fe
commit for publish Stability_seed2019_v2
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Sigma884 | 0:7bbdfc4610fe | 1 | #ifndef LPS25H_LIB_H |
Sigma884 | 0:7bbdfc4610fe | 2 | #define LPS25H_LIB_H |
Sigma884 | 0:7bbdfc4610fe | 3 | |
Sigma884 | 0:7bbdfc4610fe | 4 | #include "mbed.h" |
Sigma884 | 0:7bbdfc4610fe | 5 | |
Sigma884 | 0:7bbdfc4610fe | 6 | #define WHO_AM_I 0x0F |
Sigma884 | 0:7bbdfc4610fe | 7 | |
Sigma884 | 0:7bbdfc4610fe | 8 | #define CTRL_REG1 0x20 |
Sigma884 | 0:7bbdfc4610fe | 9 | #define CTRL_REG2 0x21 |
Sigma884 | 0:7bbdfc4610fe | 10 | #define FIFO_CTRL 0x2E |
Sigma884 | 0:7bbdfc4610fe | 11 | |
Sigma884 | 0:7bbdfc4610fe | 12 | #define P_XL 0x28 |
Sigma884 | 0:7bbdfc4610fe | 13 | #define P_L 0x29 |
Sigma884 | 0:7bbdfc4610fe | 14 | #define P_H 0x2A |
Sigma884 | 0:7bbdfc4610fe | 15 | |
Sigma884 | 0:7bbdfc4610fe | 16 | #define T_L 0x2B |
Sigma884 | 0:7bbdfc4610fe | 17 | #define T_H 0x2C |
Sigma884 | 0:7bbdfc4610fe | 18 | |
Sigma884 | 0:7bbdfc4610fe | 19 | class LPS25H_spi{ |
Sigma884 | 0:7bbdfc4610fe | 20 | /********** |
Sigma884 | 0:7bbdfc4610fe | 21 | コンストラクタ |
Sigma884 | 0:7bbdfc4610fe | 22 | ・使用するSPIを選択 |
Sigma884 | 0:7bbdfc4610fe | 23 | ・使用するCSピンを選択 |
Sigma884 | 0:7bbdfc4610fe | 24 | |
Sigma884 | 0:7bbdfc4610fe | 25 | ex) LPS25H_spi myLPS25H(SPI, p8); |
Sigma884 | 0:7bbdfc4610fe | 26 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 27 | public: |
Sigma884 | 0:7bbdfc4610fe | 28 | LPS25H_spi(SPI &userSPI, PinName userPin); |
Sigma884 | 0:7bbdfc4610fe | 29 | private: |
Sigma884 | 0:7bbdfc4610fe | 30 | SPI *spi; |
Sigma884 | 0:7bbdfc4610fe | 31 | DigitalOut cs; |
Sigma884 | 0:7bbdfc4610fe | 32 | |
Sigma884 | 0:7bbdfc4610fe | 33 | /********** |
Sigma884 | 0:7bbdfc4610fe | 34 | (void)センサー起動(int データレート) |
Sigma884 | 0:7bbdfc4610fe | 35 | ・データ更新レートを選択(1, 10, 25, 50, 75) |
Sigma884 | 0:7bbdfc4610fe | 36 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 37 | public: |
Sigma884 | 0:7bbdfc4610fe | 38 | void begin(int drate); |
Sigma884 | 0:7bbdfc4610fe | 39 | private: |
Sigma884 | 0:7bbdfc4610fe | 40 | int cmd_ctrl_reg1; |
Sigma884 | 0:7bbdfc4610fe | 41 | |
Sigma884 | 0:7bbdfc4610fe | 42 | /********** |
Sigma884 | 0:7bbdfc4610fe | 43 | (void)FIFO設定(int FIFOレベル) |
Sigma884 | 0:7bbdfc4610fe | 44 | ・FIFOウォーターマークレベルを選択(2, 4, 8, 16, 32) |
Sigma884 | 0:7bbdfc4610fe | 45 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 46 | public: |
Sigma884 | 0:7bbdfc4610fe | 47 | void setFIFO(int size); |
Sigma884 | 0:7bbdfc4610fe | 48 | private: |
Sigma884 | 0:7bbdfc4610fe | 49 | int cmd_ctrl_reg2; |
Sigma884 | 0:7bbdfc4610fe | 50 | int cmd_fifo_ctrl; |
Sigma884 | 0:7bbdfc4610fe | 51 | |
Sigma884 | 0:7bbdfc4610fe | 52 | /********** |
Sigma884 | 0:7bbdfc4610fe | 53 | (int)Who Am I |
Sigma884 | 0:7bbdfc4610fe | 54 | 接続できているかを判定 |
Sigma884 | 0:7bbdfc4610fe | 55 | 接続OK:1 |
Sigma884 | 0:7bbdfc4610fe | 56 | 接続NG:-1 |
Sigma884 | 0:7bbdfc4610fe | 57 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 58 | public: |
Sigma884 | 0:7bbdfc4610fe | 59 | int whoAmI(); |
Sigma884 | 0:7bbdfc4610fe | 60 | private: |
Sigma884 | 0:7bbdfc4610fe | 61 | int ans; |
Sigma884 | 0:7bbdfc4610fe | 62 | |
Sigma884 | 0:7bbdfc4610fe | 63 | /********** |
Sigma884 | 0:7bbdfc4610fe | 64 | (float)気圧を取得 |
Sigma884 | 0:7bbdfc4610fe | 65 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 66 | public: |
Sigma884 | 0:7bbdfc4610fe | 67 | float getPres(); |
Sigma884 | 0:7bbdfc4610fe | 68 | private: |
Sigma884 | 0:7bbdfc4610fe | 69 | unsigned int pres_raw[3]; |
Sigma884 | 0:7bbdfc4610fe | 70 | |
Sigma884 | 0:7bbdfc4610fe | 71 | /********** |
Sigma884 | 0:7bbdfc4610fe | 72 | (float)温度を取得 |
Sigma884 | 0:7bbdfc4610fe | 73 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 74 | public: |
Sigma884 | 0:7bbdfc4610fe | 75 | float getTemp(); |
Sigma884 | 0:7bbdfc4610fe | 76 | private: |
Sigma884 | 0:7bbdfc4610fe | 77 | unsigned int temp_raw[2]; |
Sigma884 | 0:7bbdfc4610fe | 78 | |
Sigma884 | 0:7bbdfc4610fe | 79 | /********** |
Sigma884 | 0:7bbdfc4610fe | 80 | (float)高度を取得(float 0mでの気圧, float 0mでの温度) |
Sigma884 | 0:7bbdfc4610fe | 81 | ・引数に0m地点での気圧・温度を入れる |
Sigma884 | 0:7bbdfc4610fe | 82 | ・計算式のソース:http://www.geocities.jp/u4ren6/Main/Excel_Data0017.html |
Sigma884 | 0:7bbdfc4610fe | 83 | **********/ |
Sigma884 | 0:7bbdfc4610fe | 84 | public: |
Sigma884 | 0:7bbdfc4610fe | 85 | float getAlt(float P_0, float T_0); |
Sigma884 | 0:7bbdfc4610fe | 86 | private: |
Sigma884 | 0:7bbdfc4610fe | 87 | float pres_0; |
Sigma884 | 0:7bbdfc4610fe | 88 | float temp_0; |
Sigma884 | 0:7bbdfc4610fe | 89 | float pres_now; |
Sigma884 | 0:7bbdfc4610fe | 90 | }; |
Sigma884 | 0:7bbdfc4610fe | 91 | |
Sigma884 | 0:7bbdfc4610fe | 92 | #endif |