|
| 1 | +/****************************************************************************** |
| 2 | +<filename> |
| 3 | +<Title> |
| 4 | +<name @ SparkFun Electronics> |
| 5 | +<original creation date> |
| 6 | +<github repository address> |
| 7 | +<multiline verbose description of file functionality> |
| 8 | +
|
| 9 | +This file reads and writes arbitrary values to the I2C bus, targeting the BME280 |
| 10 | +
|
| 11 | +
|
| 12 | +
|
| 13 | +Resources: |
| 14 | +<additional library requirements> |
| 15 | +Development environment specifics: |
| 16 | +<arduino/development environment version> |
| 17 | +<hardware version> |
| 18 | +<etc> |
| 19 | +This code is released under the [MIT License](http://opensource.org/licenses/MIT). |
| 20 | +Please review the LICENSE.md file included with this example. If you have any questions |
| 21 | +or concerns with licensing, please contact [email protected]. |
| 22 | +Distributed as-is; no warranty is given. |
| 23 | +******************************************************************************/ |
| 24 | + |
| 25 | +#include <stdint.h> |
| 26 | +#include "SparkFunBME280.h" |
| 27 | + |
| 28 | +#include "Wire.h" |
| 29 | +#include "SPI.h" |
| 30 | + |
| 31 | +//Global sensor object |
| 32 | +BME280 mySensor; |
| 33 | + |
| 34 | + |
| 35 | +float t_fine; |
| 36 | + |
| 37 | +void setup() |
| 38 | +{ |
| 39 | + //Tell the driver what sensor modes to use here! |
| 40 | + |
| 41 | + //commInterface can be I2C_MODE or SPI_MODE |
| 42 | + mySensor.settings.commInterface = I2C_MODE; |
| 43 | + |
| 44 | + //Specify chipSelectPin using arduino pin names |
| 45 | + mySensor.settings.chipSelectPin = 10; |
| 46 | + |
| 47 | + //renMode can be: |
| 48 | + // 0, Sleep mode |
| 49 | + // 1 or 2, Forced mode |
| 50 | + // 3, Normal mode |
| 51 | + mySensor.settings.runMode = 3; //Forced mode |
| 52 | + |
| 53 | + //tStandby can be: |
| 54 | + // 0, 0.5ms |
| 55 | + // 1, 62.5ms |
| 56 | + // 2, 125ms |
| 57 | + // 3, 250ms |
| 58 | + // 4, 500ms |
| 59 | + // 5, 1000ms |
| 60 | + // 6, 10ms |
| 61 | + // 7, 20ms |
| 62 | + mySensor.settings.tStandby = 0; |
| 63 | + |
| 64 | + //filter can be off or number of FIR coefficients to use: |
| 65 | + // 0, filter off |
| 66 | + // 1, coefficients = 2 |
| 67 | + // 2, coefficients = 4 |
| 68 | + // 3, coefficients = 8 |
| 69 | + // 4, coefficients = 16 |
| 70 | + mySensor.settings.filter = 0; |
| 71 | + |
| 72 | + //tempOverSample can be: |
| 73 | + // 0, skipped |
| 74 | + // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively |
| 75 | + mySensor.settings.tempOverSample = 1; |
| 76 | + |
| 77 | + //pressOverSample can be: |
| 78 | + // 0, skipped |
| 79 | + // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively |
| 80 | + mySensor.settings.pressOverSample = 1; |
| 81 | + |
| 82 | + //humidOverSample can be: |
| 83 | + // 0, skipped |
| 84 | + // 1 through 5, oversampling *1, *2, *4, *8, *16 respectively |
| 85 | + mySensor.settings.humidOverSample = 1; |
| 86 | + |
| 87 | + Serial.begin(57600); |
| 88 | + Serial.print("Program Started\n"); |
| 89 | + Serial.print("Starting BME280... result of .begin(): 0x"); |
| 90 | + |
| 91 | + //Calling .begin() causes the settings to be loaded |
| 92 | + Serial.println(mySensor.begin(), HEX); |
| 93 | + |
| 94 | +//Debug chaff |
| 95 | + /* |
| 96 | + Serial.print("ID(0xD0): 0x"); |
| 97 | + Serial.println(mySensor.readRegister(0xD0), HEX); |
| 98 | + Serial.print("Reset register(0xE0): 0x"); |
| 99 | + Serial.println(mySensor.readRegister(0xE0), HEX); |
| 100 | + Serial.print("ctrl_meas(0xF4): 0x"); |
| 101 | + Serial.println(mySensor.readRegister(0xF4), HEX); |
| 102 | + Serial.print("ctrl_hum(0xF2): 0x"); |
| 103 | + Serial.println(mySensor.readRegister(0xF2), HEX); |
| 104 | + |
| 105 | + Serial.println(); |
| 106 | +
|
| 107 | + Serial.print("\nDisplaying concatenated calibration words\n"); |
| 108 | + Serial.print("dig_T1, uint16: "); |
| 109 | + Serial.println(mySensor.calibration.dig_T1); |
| 110 | + Serial.print("dig_T2, int16: "); |
| 111 | + Serial.println(mySensor.calibration.dig_T2); |
| 112 | + Serial.print("dig_T3, int16: "); |
| 113 | + Serial.println(mySensor.calibration.dig_T3); |
| 114 | + |
| 115 | + Serial.print("dig_P1, uint16: "); |
| 116 | + Serial.println(mySensor.calibration.dig_P1); |
| 117 | + Serial.print("dig_P2, int16: "); |
| 118 | + Serial.println(mySensor.calibration.dig_P2); |
| 119 | + Serial.print("dig_P3, int16: "); |
| 120 | + Serial.println(mySensor.calibration.dig_P3); |
| 121 | + Serial.print("dig_P4, int16: "); |
| 122 | + Serial.println(mySensor.calibration.dig_P4); |
| 123 | + Serial.print("dig_P5, int16: "); |
| 124 | + Serial.println(mySensor.calibration.dig_P5); |
| 125 | + Serial.print("dig_P6, int16: "); |
| 126 | + Serial.println(mySensor.calibration.dig_P6); |
| 127 | + Serial.print("dig_P7, int16: "); |
| 128 | + Serial.println(mySensor.calibration.dig_P7); |
| 129 | + Serial.print("dig_P8, int16: "); |
| 130 | + Serial.println(mySensor.calibration.dig_P8); |
| 131 | + Serial.print("dig_P9, int16: "); |
| 132 | + Serial.println(mySensor.calibration.dig_P9); |
| 133 | + |
| 134 | + Serial.print("dig_H1, uint8: "); |
| 135 | + Serial.println(mySensor.calibration.dig_H1); |
| 136 | + Serial.print("dig_H2, int16: "); |
| 137 | + Serial.println(mySensor.calibration.dig_H2); |
| 138 | + Serial.print("dig_H3, uint8: "); |
| 139 | + Serial.println(mySensor.calibration.dig_H3); |
| 140 | + Serial.print("dig_H4, int16: "); |
| 141 | + Serial.println(mySensor.calibration.dig_H4); |
| 142 | + Serial.print("dig_H5, int16: "); |
| 143 | + Serial.println(mySensor.calibration.dig_H5); |
| 144 | + Serial.print("dig_H6, uint8: "); |
| 145 | + Serial.println(mySensor.calibration.dig_H6); |
| 146 | + */ |
| 147 | +} |
| 148 | + |
| 149 | +void loop() |
| 150 | +{ |
| 151 | +//Debug chaff |
| 152 | + /* |
| 153 | + Serial.print("ID: 0x"); |
| 154 | + Serial.println(mySensor.readRegister(0xD0), HEX); |
| 155 | + Serial.print("Status: 0x"); |
| 156 | + Serial.println(mySensor.readRegister(0xF3), HEX); |
| 157 | + Serial.print("tempMSB: 0x"); |
| 158 | + Serial.println(mySensor.readRegister(BME280_TEMPERATURE_MSB_REG), HEX); |
| 159 | + Serial.print("tempLSB: 0x"); |
| 160 | + Serial.println(mySensor.readRegister(BME280_TEMPERATURE_LSB_REG), HEX); |
| 161 | + Serial.print("tempXLSB: 0x"); |
| 162 | + Serial.println(mySensor.readRegister(BME280_TEMPERATURE_XLSB_REG), HEX); |
| 163 | + */ |
| 164 | + |
| 165 | + Serial.print("Temperature: "); |
| 166 | + Serial.print(mySensor.readTempC(), 2); |
| 167 | + Serial.println(" degrees C"); |
| 168 | + |
| 169 | + Serial.print("Temperature: "); |
| 170 | + Serial.print(mySensor.readTempF(), 2); |
| 171 | + Serial.println(" degrees F"); |
| 172 | + |
| 173 | + Serial.print("Pressure: "); |
| 174 | + Serial.print(mySensor.readFloatPressure(), 2); |
| 175 | + Serial.println(" Pa"); |
| 176 | + |
| 177 | + Serial.print("Altitude: "); |
| 178 | + Serial.print(mySensor.readFloatAltitudeMeters(), 2); |
| 179 | + Serial.println("m"); |
| 180 | + |
| 181 | + Serial.print("Altitude: "); |
| 182 | + Serial.print(mySensor.readFloatAltitudeFeet(), 2); |
| 183 | + Serial.println("ft"); |
| 184 | + |
| 185 | + Serial.print("%RH: "); |
| 186 | + Serial.print(mySensor.readFloatHumidity(), 2); |
| 187 | + Serial.println(" %"); |
| 188 | + |
| 189 | + Serial.println(); |
| 190 | + |
| 191 | + delay(1000); |
| 192 | + |
| 193 | +} |
0 commit comments