Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
main.cpp@0:84c0a170d0c0, 2020-05-17 (annotated)
- Committer:
- sasakisho
- Date:
- Sun May 17 00:58:51 2020 +0000
- Revision:
- 0:84c0a170d0c0
version0
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
sasakisho | 0:84c0a170d0c0 | 1 | #include "mbed.h" |
sasakisho | 0:84c0a170d0c0 | 2 | |
sasakisho | 0:84c0a170d0c0 | 3 | Serial pc (USBTX, USBRX); |
sasakisho | 0:84c0a170d0c0 | 4 | I2C i2c(p9, p10); |
sasakisho | 0:84c0a170d0c0 | 5 | |
sasakisho | 0:84c0a170d0c0 | 6 | //BME680 Slave address |
sasakisho | 0:84c0a170d0c0 | 7 | #define ADDR_BME 0xED |
sasakisho | 0:84c0a170d0c0 | 8 | |
sasakisho | 0:84c0a170d0c0 | 9 | //LPS331AP registers |
sasakisho | 0:84c0a170d0c0 | 10 | #define BME_WHO 0xD0 |
sasakisho | 0:84c0a170d0c0 | 11 | #define BME_SET1 0x74 |
sasakisho | 0:84c0a170d0c0 | 12 | #define BME_SET2 0x72 |
sasakisho | 0:84c0a170d0c0 | 13 | #define BME_P_LL 0x21 |
sasakisho | 0:84c0a170d0c0 | 14 | #define BME_P_L 0x20 |
sasakisho | 0:84c0a170d0c0 | 15 | #define BME_P_H 0x1F |
sasakisho | 0:84c0a170d0c0 | 16 | |
sasakisho | 0:84c0a170d0c0 | 17 | char cmd[2]; |
sasakisho | 0:84c0a170d0c0 | 18 | |
sasakisho | 0:84c0a170d0c0 | 19 | void i2c_write(char addr, char regist, char data) |
sasakisho | 0:84c0a170d0c0 | 20 | { |
sasakisho | 0:84c0a170d0c0 | 21 | cmd[0] = regist; |
sasakisho | 0:84c0a170d0c0 | 22 | cmd[0] = data; |
sasakisho | 0:84c0a170d0c0 | 23 | i2c.write(addr, cmd, 2); |
sasakisho | 0:84c0a170d0c0 | 24 | } |
sasakisho | 0:84c0a170d0c0 | 25 | |
sasakisho | 0:84c0a170d0c0 | 26 | char i2c_read(char addr, char regist) |
sasakisho | 0:84c0a170d0c0 | 27 | { |
sasakisho | 0:84c0a170d0c0 | 28 | cmd[0] = regist; |
sasakisho | 0:84c0a170d0c0 | 29 | i2c.write(addr, cmd, 1); |
sasakisho | 0:84c0a170d0c0 | 30 | i2c.read(addr, cmd, 1); |
sasakisho | 0:84c0a170d0c0 | 31 | return cmd[0]; |
sasakisho | 0:84c0a170d0c0 | 32 | } |
sasakisho | 0:84c0a170d0c0 | 33 | |
sasakisho | 0:84c0a170d0c0 | 34 | int main() |
sasakisho | 0:84c0a170d0c0 | 35 | { |
sasakisho | 0:84c0a170d0c0 | 36 | unsigned long ID, H, L, XL; |
sasakisho | 0:84c0a170d0c0 | 37 | char id[2], data[3]; |
sasakisho | 0:84c0a170d0c0 | 38 | double P; |
sasakisho | 0:84c0a170d0c0 | 39 | |
sasakisho | 0:84c0a170d0c0 | 40 | ID = i2c_read(ADDR_BME, BME_WHO); |
sasakisho | 0:84c0a170d0c0 | 41 | pc.printf("ID = 0x%x\n", ID); |
sasakisho | 0:84c0a170d0c0 | 42 | |
sasakisho | 0:84c0a170d0c0 | 43 | while(1) |
sasakisho | 0:84c0a170d0c0 | 44 | { |
sasakisho | 0:84c0a170d0c0 | 45 | i2c_write(ADDR_BME, BME_SET1, 0x07); |
sasakisho | 0:84c0a170d0c0 | 46 | wait(0.5); |
sasakisho | 0:84c0a170d0c0 | 47 | i2c_write(ADDR_BME, BME_SET2, 0x00); |
sasakisho | 0:84c0a170d0c0 | 48 | |
sasakisho | 0:84c0a170d0c0 | 49 | H = i2c_read(ADDR_BME, BME_P_H); |
sasakisho | 0:84c0a170d0c0 | 50 | |
sasakisho | 0:84c0a170d0c0 | 51 | L = i2c_read(ADDR_BME, BME_P_L); |
sasakisho | 0:84c0a170d0c0 | 52 | |
sasakisho | 0:84c0a170d0c0 | 53 | XL = i2c_read(ADDR_BME, BME_P_LL); |
sasakisho | 0:84c0a170d0c0 | 54 | |
sasakisho | 0:84c0a170d0c0 | 55 | P = (H << 8) | (L << 8) | XL; |
sasakisho | 0:84c0a170d0c0 | 56 | pc.printf("P = %lf\n", P); |
sasakisho | 0:84c0a170d0c0 | 57 | |
sasakisho | 0:84c0a170d0c0 | 58 | wait(1.0); |
sasakisho | 0:84c0a170d0c0 | 59 | |
sasakisho | 0:84c0a170d0c0 | 60 | } |
sasakisho | 0:84c0a170d0c0 | 61 | |
sasakisho | 0:84c0a170d0c0 | 62 | } |