BME280 library
BME280.h@0:b32d0acc420d, 2015-11-23 (annotated)
- Committer:
- yasuyuki
- Date:
- Mon Nov 23 07:50:28 2015 +0000
- Revision:
- 0:b32d0acc420d
release
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yasuyuki | 0:b32d0acc420d | 1 | //********************** |
yasuyuki | 0:b32d0acc420d | 2 | // BME280.h for mbed |
yasuyuki | 0:b32d0acc420d | 3 | // |
yasuyuki | 0:b32d0acc420d | 4 | // (C)Copyright 2015 All rights reserved by Y.Onodera |
yasuyuki | 0:b32d0acc420d | 5 | // http://einstlab.web.fc2.com |
yasuyuki | 0:b32d0acc420d | 6 | //********************** |
yasuyuki | 0:b32d0acc420d | 7 | #ifndef BME280_H_ |
yasuyuki | 0:b32d0acc420d | 8 | #define BME280_H_ |
yasuyuki | 0:b32d0acc420d | 9 | |
yasuyuki | 0:b32d0acc420d | 10 | #define BME280_ADDR 0xEC |
yasuyuki | 0:b32d0acc420d | 11 | #define hum_lsb 0xFE |
yasuyuki | 0:b32d0acc420d | 12 | #define hum_msb 0xFD |
yasuyuki | 0:b32d0acc420d | 13 | #define temp_xlsb 0xFC |
yasuyuki | 0:b32d0acc420d | 14 | #define temp_lsb 0xFB |
yasuyuki | 0:b32d0acc420d | 15 | #define temp_msb 0xFA |
yasuyuki | 0:b32d0acc420d | 16 | #define press_xlsb 0xF9 |
yasuyuki | 0:b32d0acc420d | 17 | #define press_lsb 0xF8 |
yasuyuki | 0:b32d0acc420d | 18 | #define press_msb 0xF7 |
yasuyuki | 0:b32d0acc420d | 19 | #define config 0xF5 |
yasuyuki | 0:b32d0acc420d | 20 | #define ctrl_meas 0xF4 |
yasuyuki | 0:b32d0acc420d | 21 | #define status 0xF3 |
yasuyuki | 0:b32d0acc420d | 22 | #define ctrl_hum 0xF2 |
yasuyuki | 0:b32d0acc420d | 23 | #define calib41 0xF0 |
yasuyuki | 0:b32d0acc420d | 24 | #define calib40 0xEF |
yasuyuki | 0:b32d0acc420d | 25 | #define calib39 0xEE |
yasuyuki | 0:b32d0acc420d | 26 | #define calib38 0xED |
yasuyuki | 0:b32d0acc420d | 27 | #define calib37 0xEC |
yasuyuki | 0:b32d0acc420d | 28 | #define calib36 0xEB |
yasuyuki | 0:b32d0acc420d | 29 | #define calib35 0xEA |
yasuyuki | 0:b32d0acc420d | 30 | #define calib34 0xE9 |
yasuyuki | 0:b32d0acc420d | 31 | #define calib33 0xE8 |
yasuyuki | 0:b32d0acc420d | 32 | #define calib32 0xE7 |
yasuyuki | 0:b32d0acc420d | 33 | #define calib31 0xE6 |
yasuyuki | 0:b32d0acc420d | 34 | #define calib30 0xE5 |
yasuyuki | 0:b32d0acc420d | 35 | #define calib29 0xE4 |
yasuyuki | 0:b32d0acc420d | 36 | #define calib28 0xE3 |
yasuyuki | 0:b32d0acc420d | 37 | #define calib27 0xE2 |
yasuyuki | 0:b32d0acc420d | 38 | #define calib26 0xE1 |
yasuyuki | 0:b32d0acc420d | 39 | #define reset 0xE0 |
yasuyuki | 0:b32d0acc420d | 40 | #define id 0xD0 |
yasuyuki | 0:b32d0acc420d | 41 | #define calib25 0xA1 |
yasuyuki | 0:b32d0acc420d | 42 | #define calib24 0xA0 |
yasuyuki | 0:b32d0acc420d | 43 | #define calib23 0x9F |
yasuyuki | 0:b32d0acc420d | 44 | #define calib22 0x9E |
yasuyuki | 0:b32d0acc420d | 45 | #define calib21 0x9D |
yasuyuki | 0:b32d0acc420d | 46 | #define calib20 0x9C |
yasuyuki | 0:b32d0acc420d | 47 | #define calib19 0x9B |
yasuyuki | 0:b32d0acc420d | 48 | #define calib18 0x9A |
yasuyuki | 0:b32d0acc420d | 49 | #define calib17 0x99 |
yasuyuki | 0:b32d0acc420d | 50 | #define calib16 0x98 |
yasuyuki | 0:b32d0acc420d | 51 | #define calib15 0x97 |
yasuyuki | 0:b32d0acc420d | 52 | #define calib14 0x96 |
yasuyuki | 0:b32d0acc420d | 53 | #define calib13 0x95 |
yasuyuki | 0:b32d0acc420d | 54 | #define calib12 0x94 |
yasuyuki | 0:b32d0acc420d | 55 | #define calib11 0x93 |
yasuyuki | 0:b32d0acc420d | 56 | #define calib10 0x92 |
yasuyuki | 0:b32d0acc420d | 57 | #define calib09 0x91 |
yasuyuki | 0:b32d0acc420d | 58 | #define calib08 0x90 |
yasuyuki | 0:b32d0acc420d | 59 | #define calib07 0x8F |
yasuyuki | 0:b32d0acc420d | 60 | #define calib06 0x8E |
yasuyuki | 0:b32d0acc420d | 61 | #define calib05 0x8D |
yasuyuki | 0:b32d0acc420d | 62 | #define calib04 0x8C |
yasuyuki | 0:b32d0acc420d | 63 | #define calib03 0x8B |
yasuyuki | 0:b32d0acc420d | 64 | #define calib02 0x8A |
yasuyuki | 0:b32d0acc420d | 65 | #define calib01 0x89 |
yasuyuki | 0:b32d0acc420d | 66 | #define calib00 0x88 |
yasuyuki | 0:b32d0acc420d | 67 | |
yasuyuki | 0:b32d0acc420d | 68 | #include "mbed.h" |
yasuyuki | 0:b32d0acc420d | 69 | |
yasuyuki | 0:b32d0acc420d | 70 | // see BST-BME280-DS001-10 |
yasuyuki | 0:b32d0acc420d | 71 | #define BME280_S32_t signed int |
yasuyuki | 0:b32d0acc420d | 72 | #define BME280_S64_t signed long long |
yasuyuki | 0:b32d0acc420d | 73 | #define BME280_U32_t unsigned int |
yasuyuki | 0:b32d0acc420d | 74 | |
yasuyuki | 0:b32d0acc420d | 75 | |
yasuyuki | 0:b32d0acc420d | 76 | union WORD32 { |
yasuyuki | 0:b32d0acc420d | 77 | signed int s32; |
yasuyuki | 0:b32d0acc420d | 78 | unsigned int u32; |
yasuyuki | 0:b32d0acc420d | 79 | struct { |
yasuyuki | 0:b32d0acc420d | 80 | unsigned char dummy; |
yasuyuki | 0:b32d0acc420d | 81 | unsigned char XLSB; |
yasuyuki | 0:b32d0acc420d | 82 | unsigned char LSB; |
yasuyuki | 0:b32d0acc420d | 83 | unsigned char MSB; |
yasuyuki | 0:b32d0acc420d | 84 | }; |
yasuyuki | 0:b32d0acc420d | 85 | }; |
yasuyuki | 0:b32d0acc420d | 86 | |
yasuyuki | 0:b32d0acc420d | 87 | union WORD16 { |
yasuyuki | 0:b32d0acc420d | 88 | signed short s16; |
yasuyuki | 0:b32d0acc420d | 89 | unsigned short u16; |
yasuyuki | 0:b32d0acc420d | 90 | struct { |
yasuyuki | 0:b32d0acc420d | 91 | unsigned char LSB; |
yasuyuki | 0:b32d0acc420d | 92 | unsigned char MSB; |
yasuyuki | 0:b32d0acc420d | 93 | }; |
yasuyuki | 0:b32d0acc420d | 94 | }; |
yasuyuki | 0:b32d0acc420d | 95 | |
yasuyuki | 0:b32d0acc420d | 96 | |
yasuyuki | 0:b32d0acc420d | 97 | class BME280{ |
yasuyuki | 0:b32d0acc420d | 98 | public: |
yasuyuki | 0:b32d0acc420d | 99 | BME280 (PinName sda, PinName scl); |
yasuyuki | 0:b32d0acc420d | 100 | BME280 (I2C& p_i2c); |
yasuyuki | 0:b32d0acc420d | 101 | |
yasuyuki | 0:b32d0acc420d | 102 | void set(unsigned char a,unsigned char b); |
yasuyuki | 0:b32d0acc420d | 103 | unsigned char get(unsigned char a); |
yasuyuki | 0:b32d0acc420d | 104 | void getALL(); |
yasuyuki | 0:b32d0acc420d | 105 | unsigned int humidity(); |
yasuyuki | 0:b32d0acc420d | 106 | signed int temperature(); |
yasuyuki | 0:b32d0acc420d | 107 | unsigned int pressure(); |
yasuyuki | 0:b32d0acc420d | 108 | void init(); |
yasuyuki | 0:b32d0acc420d | 109 | |
yasuyuki | 0:b32d0acc420d | 110 | protected: |
yasuyuki | 0:b32d0acc420d | 111 | |
yasuyuki | 0:b32d0acc420d | 112 | I2C _i2c; |
yasuyuki | 0:b32d0acc420d | 113 | |
yasuyuki | 0:b32d0acc420d | 114 | union WORD16 calib; |
yasuyuki | 0:b32d0acc420d | 115 | union WORD16 hum; |
yasuyuki | 0:b32d0acc420d | 116 | union WORD32 temp; |
yasuyuki | 0:b32d0acc420d | 117 | union WORD32 press; |
yasuyuki | 0:b32d0acc420d | 118 | char buf[8]; |
yasuyuki | 0:b32d0acc420d | 119 | |
yasuyuki | 0:b32d0acc420d | 120 | unsigned short dig_T1; |
yasuyuki | 0:b32d0acc420d | 121 | signed short dig_T2; |
yasuyuki | 0:b32d0acc420d | 122 | signed short dig_T3; |
yasuyuki | 0:b32d0acc420d | 123 | unsigned short dig_P1; |
yasuyuki | 0:b32d0acc420d | 124 | signed short dig_P2; |
yasuyuki | 0:b32d0acc420d | 125 | signed short dig_P3; |
yasuyuki | 0:b32d0acc420d | 126 | signed short dig_P4; |
yasuyuki | 0:b32d0acc420d | 127 | signed short dig_P5; |
yasuyuki | 0:b32d0acc420d | 128 | signed short dig_P6; |
yasuyuki | 0:b32d0acc420d | 129 | signed short dig_P7; |
yasuyuki | 0:b32d0acc420d | 130 | signed short dig_P8; |
yasuyuki | 0:b32d0acc420d | 131 | signed short dig_P9; |
yasuyuki | 0:b32d0acc420d | 132 | unsigned char dig_H1; |
yasuyuki | 0:b32d0acc420d | 133 | signed short dig_H2; |
yasuyuki | 0:b32d0acc420d | 134 | unsigned char dig_H3; |
yasuyuki | 0:b32d0acc420d | 135 | signed short dig_H4; |
yasuyuki | 0:b32d0acc420d | 136 | signed short dig_H5; |
yasuyuki | 0:b32d0acc420d | 137 | signed char dig_H6; |
yasuyuki | 0:b32d0acc420d | 138 | |
yasuyuki | 0:b32d0acc420d | 139 | BME280_S32_t t_fine; |
yasuyuki | 0:b32d0acc420d | 140 | BME280_S32_t BME280_compensate_T_int32(BME280_S32_t adc_T); |
yasuyuki | 0:b32d0acc420d | 141 | BME280_U32_t BME280_compensate_P_int64(BME280_S32_t adc_P); |
yasuyuki | 0:b32d0acc420d | 142 | BME280_U32_t BME280_compensate_H_int32(BME280_S32_t adc_H); |
yasuyuki | 0:b32d0acc420d | 143 | unsigned int t; |
yasuyuki | 0:b32d0acc420d | 144 | signed int p; |
yasuyuki | 0:b32d0acc420d | 145 | signed int h; |
yasuyuki | 0:b32d0acc420d | 146 | }; |
yasuyuki | 0:b32d0acc420d | 147 | |
yasuyuki | 0:b32d0acc420d | 148 | #endif /* BME280_H_ */ |
yasuyuki | 0:b32d0acc420d | 149 | |
yasuyuki | 0:b32d0acc420d | 150 |