1
0
mirror of https://github.com/cmur2/python-bme680.git synced 2024-12-22 12:54:29 +01:00

Merge branch 'ayeks-offset'

This commit is contained in:
Phil Howard 2018-06-01 16:10:47 +01:00
commit 05f80690e0
4 changed files with 74 additions and 3 deletions

39
examples/temp-offset.py Executable file
View File

@ -0,0 +1,39 @@
#!/usr/bin/env python
import bme680
print("""Display Temperature, Pressure and Humidity with different offsets.
""")
sensor = bme680.BME680()
# These oversampling settings can be tweaked to
# change the balance between accuracy and noise in
# the data.
sensor.set_humidity_oversample(bme680.OS_2X)
sensor.set_pressure_oversample(bme680.OS_4X)
sensor.set_temperature_oversample(bme680.OS_8X)
sensor.set_filter(bme680.FILTER_SIZE_3)
def display_data(offset=0):
sensor.set_temp_offset(offset)
sensor.get_sensor_data()
output = "{0:.2f} C, {1:.2f} hPa, {2:.3f} %RH".format(sensor.data.temperature, sensor.data.pressure, sensor.data.humidity)
print(output)
print("")
print("Initial readings")
display_data()
print("SET offset 4 degrees celsius")
display_data(4)
print("SET offset -1.87 degrees celsius")
display_data(-1.87)
print("SET offset -100 degrees celsius")
display_data(-100)
print("SET offset 0 degrees celsius")
display_data(0)

21
library/LICENSE.txt Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2018 Pimoroni Ltd
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@ -2,4 +2,4 @@ include CHANGELOG.txt
include LICENSE.txt include LICENSE.txt
include README.txt include README.txt
include setup.py include setup.py
include bme680.py recursive-include bme680 *.py

View File

@ -36,7 +36,7 @@ class BME680(BME680Data):
self.set_temperature_oversample(OS_8X) self.set_temperature_oversample(OS_8X)
self.set_filter(FILTER_SIZE_3) self.set_filter(FILTER_SIZE_3)
self.set_gas_status(ENABLE_GAS_MEAS) self.set_gas_status(ENABLE_GAS_MEAS)
self.set_temp_offset(0)
self.get_sensor_data() self.get_sensor_data()
def _get_calibration_data(self): def _get_calibration_data(self):
@ -56,6 +56,17 @@ class BME680(BME680Data):
self._set_regs(SOFT_RESET_ADDR, SOFT_RESET_CMD) self._set_regs(SOFT_RESET_ADDR, SOFT_RESET_CMD)
time.sleep(RESET_PERIOD / 1000.0) time.sleep(RESET_PERIOD / 1000.0)
def set_temp_offset(self, value):
"""Set temperature offset in celsius
If set, the temperature t_fine will be increased by given value in celsius.
:param value: Temperature offset in Celsius, eg. 4, -8, 1.25
"""
if value == 0:
self.offset_temp_in_t_fine = 0
else:
self.offset_temp_in_t_fine = int(math.copysign((((int(abs(value) * 100)) << 8) - 128) / 5, value))
def set_humidity_oversample(self, value): def set_humidity_oversample(self, value):
"""Set humidity oversampling """Set humidity oversampling
@ -293,7 +304,7 @@ class BME680(BME680Data):
var3 = ((var3) * (self.calibration_data.par_t3 << 4)) >> 14 var3 = ((var3) * (self.calibration_data.par_t3 << 4)) >> 14
# Save teperature data for pressure calculations # Save teperature data for pressure calculations
self.calibration_data.t_fine = (var2 + var3) self.calibration_data.t_fine = (var2 + var3) + self.offset_temp_in_t_fine
calc_temp = (((self.calibration_data.t_fine * 5) + 128) >> 8) calc_temp = (((self.calibration_data.t_fine * 5) + 128) >> 8)
return calc_temp return calc_temp