LPS25HをSPIで使えるようにしたライブラリです。  ・気圧  ・温度  ・高度(気圧と温度から) が取得できます。 FIFOも使えます。

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?

UserRevisionLine numberNew 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