BME280 library

Dependents:   mbed_BME280

Committer:
yasuyuki
Date:
Wed Aug 03 14:28:32 2016 +0000
Revision:
1:0054d4a28927
Parent:
0:b32d0acc420d
added wait

Who changed what in which revision?

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