joseph adamu / Mbed OS CW_final_thr

Fork of CW_copy by Calvin Kalintra

Committer:
joseph_adamu
Date:
Wed Jan 10 09:50:29 2018 +0000
Revision:
1:dc648c5624b9
version for export

Who changed what in which revision?

UserRevisionLine numberNew contents of line
joseph_adamu 1:dc648c5624b9 1 /**
joseph_adamu 1:dc648c5624b9 2 ******************************************************************************
joseph_adamu 1:dc648c5624b9 3 * @file BME280.h
joseph_adamu 1:dc648c5624b9 4 * @author Toyomasa Watarai
joseph_adamu 1:dc648c5624b9 5 * @version V1.0.0
joseph_adamu 1:dc648c5624b9 6 * @date 11 March 2017
joseph_adamu 1:dc648c5624b9 7 * @brief This file contains the class of a BME280 Combined humidity and pressure sensor library with I2C interface
joseph_adamu 1:dc648c5624b9 8 ******************************************************************************
joseph_adamu 1:dc648c5624b9 9 * @attention
joseph_adamu 1:dc648c5624b9 10 *
joseph_adamu 1:dc648c5624b9 11 * Permission is hereby granted, free of charge, to any person obtaining a copy
joseph_adamu 1:dc648c5624b9 12 * of this software and associated documentation files (the "Software"), to deal
joseph_adamu 1:dc648c5624b9 13 * in the Software without restriction, including without limitation the rights
joseph_adamu 1:dc648c5624b9 14 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
joseph_adamu 1:dc648c5624b9 15 * copies of the Software, and to permit persons to whom the Software is
joseph_adamu 1:dc648c5624b9 16 * furnished to do so, subject to the following conditions:
joseph_adamu 1:dc648c5624b9 17 *
joseph_adamu 1:dc648c5624b9 18 * The above copyright notice and this permission notice shall be included in
joseph_adamu 1:dc648c5624b9 19 * all copies or substantial portions of the Software.
joseph_adamu 1:dc648c5624b9 20 *
joseph_adamu 1:dc648c5624b9 21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
joseph_adamu 1:dc648c5624b9 22 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
joseph_adamu 1:dc648c5624b9 23 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
joseph_adamu 1:dc648c5624b9 24 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
joseph_adamu 1:dc648c5624b9 25 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
joseph_adamu 1:dc648c5624b9 26 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
joseph_adamu 1:dc648c5624b9 27 * THE SOFTWARE.
joseph_adamu 1:dc648c5624b9 28 */
joseph_adamu 1:dc648c5624b9 29
joseph_adamu 1:dc648c5624b9 30 /**
joseph_adamu 1:dc648c5624b9 31 * Library for "BME280 temperature, humidity and pressure sensor module" from Switch Science
joseph_adamu 1:dc648c5624b9 32 * https://www.switch-science.com/catalog/2236/
joseph_adamu 1:dc648c5624b9 33 *
joseph_adamu 1:dc648c5624b9 34 * For more information about the BME280:
joseph_adamu 1:dc648c5624b9 35 * http://ae-bst.resource.bosch.com/media/products/dokumente/bme280/BST-BME280_DS001-10.pdf
joseph_adamu 1:dc648c5624b9 36 */
joseph_adamu 1:dc648c5624b9 37
joseph_adamu 1:dc648c5624b9 38 #ifndef MBED_BME280_H
joseph_adamu 1:dc648c5624b9 39 #define MBED_BME280_H
joseph_adamu 1:dc648c5624b9 40
joseph_adamu 1:dc648c5624b9 41 #include "mbed.h"
joseph_adamu 1:dc648c5624b9 42
joseph_adamu 1:dc648c5624b9 43 #define DEFAULT_SLAVE_ADDRESS (0x76 << 1)
joseph_adamu 1:dc648c5624b9 44
joseph_adamu 1:dc648c5624b9 45 #ifdef _DEBUG
joseph_adamu 1:dc648c5624b9 46 extern Serial pc;
joseph_adamu 1:dc648c5624b9 47 #define DEBUG_PRINT(...) pc.printf(__VA_ARGS__)
joseph_adamu 1:dc648c5624b9 48 #else
joseph_adamu 1:dc648c5624b9 49 #define DEBUG_PRINT(...)
joseph_adamu 1:dc648c5624b9 50 #endif
joseph_adamu 1:dc648c5624b9 51
joseph_adamu 1:dc648c5624b9 52 /** Interface for controlling BME280 Combined humidity and pressure sensor
joseph_adamu 1:dc648c5624b9 53 *
joseph_adamu 1:dc648c5624b9 54 * @code
joseph_adamu 1:dc648c5624b9 55 * #include "mbed.h"
joseph_adamu 1:dc648c5624b9 56 * #include "BME280.h"
joseph_adamu 1:dc648c5624b9 57 *
joseph_adamu 1:dc648c5624b9 58 * Serial pc(USBTX, USBRX);
joseph_adamu 1:dc648c5624b9 59 *
joseph_adamu 1:dc648c5624b9 60 * #if defined(TARGET_LPC1768)
joseph_adamu 1:dc648c5624b9 61 * BME280 sensor(p28, p27);
joseph_adamu 1:dc648c5624b9 62 * #else
joseph_adamu 1:dc648c5624b9 63 * BME280 sensor(I2C_SDA, I2C_SCL);
joseph_adamu 1:dc648c5624b9 64 * #endif
joseph_adamu 1:dc648c5624b9 65 *
joseph_adamu 1:dc648c5624b9 66 * int main() {
joseph_adamu 1:dc648c5624b9 67 *
joseph_adamu 1:dc648c5624b9 68 * while(1) {
joseph_adamu 1:dc648c5624b9 69 * pc.printf("%2.2f degC, %04.2f hPa, %2.2f %%\n", sensor.getTemperature(), sensor.getPressure(), sensor.getHumidity());
joseph_adamu 1:dc648c5624b9 70 * wait(1);
joseph_adamu 1:dc648c5624b9 71 * }
joseph_adamu 1:dc648c5624b9 72 * }
joseph_adamu 1:dc648c5624b9 73 *
joseph_adamu 1:dc648c5624b9 74 * @endcode
joseph_adamu 1:dc648c5624b9 75 */
joseph_adamu 1:dc648c5624b9 76
joseph_adamu 1:dc648c5624b9 77 /** BME280 class
joseph_adamu 1:dc648c5624b9 78 *
joseph_adamu 1:dc648c5624b9 79 * BME280: A library to correct environmental data using Boshe BME280 environmental sensor device
joseph_adamu 1:dc648c5624b9 80 *
joseph_adamu 1:dc648c5624b9 81 */
joseph_adamu 1:dc648c5624b9 82 class BME280
joseph_adamu 1:dc648c5624b9 83 {
joseph_adamu 1:dc648c5624b9 84 public:
joseph_adamu 1:dc648c5624b9 85
joseph_adamu 1:dc648c5624b9 86 /** Create a BME280 instance
joseph_adamu 1:dc648c5624b9 87 * which is connected to specified I2C pins with specified address
joseph_adamu 1:dc648c5624b9 88 *
joseph_adamu 1:dc648c5624b9 89 * @param sda I2C-bus SDA pin
joseph_adamu 1:dc648c5624b9 90 * @param scl I2C-bus SCL pin
joseph_adamu 1:dc648c5624b9 91 * @param slave_adr (option) I2C-bus address (default: 0x76)
joseph_adamu 1:dc648c5624b9 92 */
joseph_adamu 1:dc648c5624b9 93 BME280(PinName sda, PinName sck, char slave_adr = DEFAULT_SLAVE_ADDRESS);
joseph_adamu 1:dc648c5624b9 94
joseph_adamu 1:dc648c5624b9 95 /** Create a BME280 instance
joseph_adamu 1:dc648c5624b9 96 * which is connected to specified I2C pins with specified address
joseph_adamu 1:dc648c5624b9 97 *
joseph_adamu 1:dc648c5624b9 98 * @param i2c_obj I2C object (instance)
joseph_adamu 1:dc648c5624b9 99 * @param slave_adr (option) I2C-bus address (default: 0x76)
joseph_adamu 1:dc648c5624b9 100 */
joseph_adamu 1:dc648c5624b9 101 BME280(I2C &i2c_obj, char slave_adr = DEFAULT_SLAVE_ADDRESS);
joseph_adamu 1:dc648c5624b9 102
joseph_adamu 1:dc648c5624b9 103 /** Destructor of BME280
joseph_adamu 1:dc648c5624b9 104 */
joseph_adamu 1:dc648c5624b9 105 virtual ~BME280();
joseph_adamu 1:dc648c5624b9 106
joseph_adamu 1:dc648c5624b9 107 /** Initializa BME280 sensor
joseph_adamu 1:dc648c5624b9 108 *
joseph_adamu 1:dc648c5624b9 109 * Configure sensor setting and read parameters for calibration
joseph_adamu 1:dc648c5624b9 110 *
joseph_adamu 1:dc648c5624b9 111 */
joseph_adamu 1:dc648c5624b9 112 void initialize(void);
joseph_adamu 1:dc648c5624b9 113
joseph_adamu 1:dc648c5624b9 114 /** Read the current temperature value (degree Celsius) from BME280 sensor
joseph_adamu 1:dc648c5624b9 115 *
joseph_adamu 1:dc648c5624b9 116 */
joseph_adamu 1:dc648c5624b9 117 float getTemperature(void);
joseph_adamu 1:dc648c5624b9 118
joseph_adamu 1:dc648c5624b9 119 /** Read the current pressure value (hectopascal)from BME280 sensor
joseph_adamu 1:dc648c5624b9 120 *
joseph_adamu 1:dc648c5624b9 121 */
joseph_adamu 1:dc648c5624b9 122 float getPressure(void);
joseph_adamu 1:dc648c5624b9 123
joseph_adamu 1:dc648c5624b9 124 /** Read the current humidity value (humidity %) from BME280 sensor
joseph_adamu 1:dc648c5624b9 125 *
joseph_adamu 1:dc648c5624b9 126 */
joseph_adamu 1:dc648c5624b9 127 float getHumidity(void);
joseph_adamu 1:dc648c5624b9 128
joseph_adamu 1:dc648c5624b9 129 private:
joseph_adamu 1:dc648c5624b9 130
joseph_adamu 1:dc648c5624b9 131 I2C *i2c_p;
joseph_adamu 1:dc648c5624b9 132 I2C &i2c;
joseph_adamu 1:dc648c5624b9 133 char address;
joseph_adamu 1:dc648c5624b9 134 uint16_t dig_T1;
joseph_adamu 1:dc648c5624b9 135 int16_t dig_T2, dig_T3;
joseph_adamu 1:dc648c5624b9 136 uint16_t dig_P1;
joseph_adamu 1:dc648c5624b9 137 int16_t dig_P2, dig_P3, dig_P4, dig_P5, dig_P6, dig_P7, dig_P8, dig_P9;
joseph_adamu 1:dc648c5624b9 138 uint16_t dig_H1, dig_H3;
joseph_adamu 1:dc648c5624b9 139 int16_t dig_H2, dig_H4, dig_H5, dig_H6;
joseph_adamu 1:dc648c5624b9 140 int32_t t_fine;
joseph_adamu 1:dc648c5624b9 141
joseph_adamu 1:dc648c5624b9 142 };
joseph_adamu 1:dc648c5624b9 143
joseph_adamu 1:dc648c5624b9 144 #endif // MBED_BME280_H