BME280 library

Dependents:   mbed_BME280

BME280.h

Committer:
yasuyuki
Date:
2016-08-03
Revision:
1:0054d4a28927
Parent:
0:b32d0acc420d

File content as of revision 1:0054d4a28927:

//**********************
// BME280.h for mbed
//
// (C)Copyright 2015 All rights reserved by Y.Onodera
// http://einstlab.web.fc2.com
//**********************
#ifndef BME280_H_
#define BME280_H_

#define BME280_ADDR            0xEC
#define hum_lsb     0xFE
#define hum_msb     0xFD
#define temp_xlsb   0xFC
#define temp_lsb    0xFB
#define temp_msb    0xFA
#define press_xlsb  0xF9
#define press_lsb   0xF8
#define press_msb   0xF7
#define config      0xF5
#define ctrl_meas   0xF4
#define status      0xF3
#define ctrl_hum    0xF2
#define calib41     0xF0
#define calib40     0xEF
#define calib39     0xEE
#define calib38     0xED
#define calib37     0xEC
#define calib36     0xEB
#define calib35     0xEA
#define calib34     0xE9
#define calib33     0xE8
#define calib32     0xE7
#define calib31     0xE6
#define calib30     0xE5
#define calib29     0xE4
#define calib28     0xE3
#define calib27     0xE2
#define calib26     0xE1
#define reset       0xE0
#define id      0xD0
#define calib25     0xA1
#define calib24     0xA0
#define calib23     0x9F
#define calib22     0x9E
#define calib21     0x9D
#define calib20     0x9C
#define calib19     0x9B
#define calib18     0x9A
#define calib17     0x99
#define calib16     0x98
#define calib15     0x97
#define calib14     0x96
#define calib13     0x95
#define calib12     0x94
#define calib11     0x93
#define calib10     0x92
#define calib09     0x91
#define calib08     0x90
#define calib07     0x8F
#define calib06     0x8E
#define calib05     0x8D
#define calib04     0x8C
#define calib03     0x8B
#define calib02     0x8A
#define calib01     0x89
#define calib00     0x88

#include "mbed.h"

// see BST-BME280-DS001-10
#define BME280_S32_t    signed int
#define BME280_S64_t    signed long long
#define BME280_U32_t    unsigned int


union WORD32 {
    signed int  s32;
    unsigned int    u32;
    struct {
        unsigned char dummy;
        unsigned char XLSB;
        unsigned char LSB;
        unsigned char MSB;
    };
};

union WORD16 {
    signed short    s16;
    unsigned short  u16;
    struct {
        unsigned char   LSB;
        unsigned char   MSB;
    };
};


class BME280{
public:
    BME280 (PinName sda, PinName scl);
    BME280 (I2C& p_i2c);

    void set(unsigned char a,unsigned char b);
    unsigned char get(unsigned char a);
    void getALL();
    unsigned int humidity();
    signed int temperature();
    unsigned int pressure();
    void init();

protected:
    
    I2C _i2c;

    union WORD16 calib;
    union WORD16 hum;
    union WORD32 temp;
    union WORD32 press;
    char buf[8];

    unsigned short dig_T1;
    signed short dig_T2;
    signed short dig_T3;
    unsigned short dig_P1;
    signed short dig_P2;
    signed short dig_P3;
    signed short dig_P4;
    signed short dig_P5;
    signed short dig_P6;
    signed short dig_P7;
    signed short dig_P8;
    signed short dig_P9;
    unsigned char dig_H1;
    signed short dig_H2;
    unsigned char dig_H3;
    signed short dig_H4;
    signed short dig_H5;
    signed char dig_H6;

    BME280_S32_t t_fine;
    BME280_S32_t BME280_compensate_T_int32(BME280_S32_t adc_T);
    BME280_U32_t BME280_compensate_P_int64(BME280_S32_t adc_P);
    BME280_U32_t BME280_compensate_H_int32(BME280_S32_t adc_H);
    unsigned int t;
    signed int p;
    signed int h;
};

#endif /* BME280_H_ */