mirror of
https://github.com/cmur2/python-bme680.git
synced 2024-12-22 02:54:28 +01:00
Merge branch 'ayeks-offset'
This commit is contained in:
commit
05f80690e0
39
examples/temp-offset.py
Executable file
39
examples/temp-offset.py
Executable 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
21
library/LICENSE.txt
Normal 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.
|
@ -2,4 +2,4 @@ include CHANGELOG.txt
|
||||
include LICENSE.txt
|
||||
include README.txt
|
||||
include setup.py
|
||||
include bme680.py
|
||||
recursive-include bme680 *.py
|
||||
|
@ -36,7 +36,7 @@ class BME680(BME680Data):
|
||||
self.set_temperature_oversample(OS_8X)
|
||||
self.set_filter(FILTER_SIZE_3)
|
||||
self.set_gas_status(ENABLE_GAS_MEAS)
|
||||
|
||||
self.set_temp_offset(0)
|
||||
self.get_sensor_data()
|
||||
|
||||
def _get_calibration_data(self):
|
||||
@ -56,6 +56,17 @@ class BME680(BME680Data):
|
||||
self._set_regs(SOFT_RESET_ADDR, SOFT_RESET_CMD)
|
||||
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):
|
||||
"""Set humidity oversampling
|
||||
|
||||
@ -293,7 +304,7 @@ class BME680(BME680Data):
|
||||
var3 = ((var3) * (self.calibration_data.par_t3 << 4)) >> 14
|
||||
|
||||
# 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)
|
||||
|
||||
return calc_temp
|
||||
|
Loading…
Reference in New Issue
Block a user