気圧センサLPS22HBのライブラリ
Dependents: Hybrid_IZU2021_MAIN_OS5 Hybrid_IZU2021_MISSION_v2 Hybrid_IZU2021_MAIN Hybrid_IZU2021_MISSION
PQ_LPS22HB.cpp@0:9a7d5d7e63be, 2020-12-15 (annotated)
- 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?
User | Revision | Line number | New contents of line |
---|---|---|---|
tanahashi | 0:9a7d5d7e63be | 1 | #include "mbed.h" |
tanahashi | 0:9a7d5d7e63be | 2 | #include "PQ_LPS22HB.h" |
tanahashi | 0:9a7d5d7e63be | 3 | |
tanahashi | 0:9a7d5d7e63be | 4 | LPS22HB :: LPS22HB(I2C &i2c, SA0_t SA0) |
tanahashi | 0:9a7d5d7e63be | 5 | { |
tanahashi | 0:9a7d5d7e63be | 6 | _addr = SA0; |
tanahashi | 0:9a7d5d7e63be | 7 | _i2c = &i2c; |
tanahashi | 0:9a7d5d7e63be | 8 | _i2c -> frequency(400000); |
tanahashi | 0:9a7d5d7e63be | 9 | } |
tanahashi | 0:9a7d5d7e63be | 10 | |
tanahashi | 0:9a7d5d7e63be | 11 | void LPS22HB :: begin() |
tanahashi | 0:9a7d5d7e63be | 12 | { |
tanahashi | 0:9a7d5d7e63be | 13 | cmd[0] = LPS22HB_CTRL_REG1; |
tanahashi | 0:9a7d5d7e63be | 14 | cmd[1] = 0x40; |
tanahashi | 0:9a7d5d7e63be | 15 | _i2c -> write(_addr, cmd, 2); |
tanahashi | 0:9a7d5d7e63be | 16 | } |
tanahashi | 0:9a7d5d7e63be | 17 | |
tanahashi | 0:9a7d5d7e63be | 18 | bool LPS22HB :: test() |
tanahashi | 0:9a7d5d7e63be | 19 | { |
tanahashi | 0:9a7d5d7e63be | 20 | cmd[0] = LPS22HB_WHO_AM_I; |
tanahashi | 0:9a7d5d7e63be | 21 | _i2c -> write(_addr, cmd, 1); |
tanahashi | 0:9a7d5d7e63be | 22 | _i2c -> read(_addr, buff, 1); |
tanahashi | 0:9a7d5d7e63be | 23 | if(buff[0] == 0xB1) { |
tanahashi | 0:9a7d5d7e63be | 24 | return true; |
tanahashi | 0:9a7d5d7e63be | 25 | } else { |
tanahashi | 0:9a7d5d7e63be | 26 | return false; |
tanahashi | 0:9a7d5d7e63be | 27 | } |
tanahashi | 0:9a7d5d7e63be | 28 | } |
tanahashi | 0:9a7d5d7e63be | 29 | |
tanahashi | 0:9a7d5d7e63be | 30 | void LPS22HB :: read(float *press, float *temp) |
tanahashi | 0:9a7d5d7e63be | 31 | { |
tanahashi | 0:9a7d5d7e63be | 32 | read_press(press); |
tanahashi | 0:9a7d5d7e63be | 33 | read_temp(temp); |
tanahashi | 0:9a7d5d7e63be | 34 | } |
tanahashi | 0:9a7d5d7e63be | 35 | |
tanahashi | 0:9a7d5d7e63be | 36 | void LPS22HB :: read_press(float *press) |
tanahashi | 0:9a7d5d7e63be | 37 | { |
tanahashi | 0:9a7d5d7e63be | 38 | cmd[0] = LPS22HB_PRESS_XL; |
tanahashi | 0:9a7d5d7e63be | 39 | _i2c -> write(_addr, cmd, 1); |
tanahashi | 0:9a7d5d7e63be | 40 | _i2c -> read(_addr, buff, 3); |
tanahashi | 0:9a7d5d7e63be | 41 | *press = (int)(buff[0] | buff[1] << 8 | buff[2] << 16) / 4096.0f; |
tanahashi | 0:9a7d5d7e63be | 42 | } |
tanahashi | 0:9a7d5d7e63be | 43 | |
tanahashi | 0:9a7d5d7e63be | 44 | void LPS22HB :: read_temp(float *temp) |
tanahashi | 0:9a7d5d7e63be | 45 | { |
tanahashi | 0:9a7d5d7e63be | 46 | cmd[0] = LPS22HB_TEMP_L; |
tanahashi | 0:9a7d5d7e63be | 47 | _i2c -> write(_addr, cmd, 1); |
tanahashi | 0:9a7d5d7e63be | 48 | _i2c -> read(_addr, buff, 2); |
tanahashi | 0:9a7d5d7e63be | 49 | *temp = (short)(buff[0] | buff[1] << 8) * 0.01; |
tanahashi | 0:9a7d5d7e63be | 50 | } |