Skip to content

Commit 3199526

Browse files
committed
Add Temperature Oversampling
1 parent 4e6ba64 commit 3199526

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

adafruit_mlx90393.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,7 @@ def __init__( # pylint: disable=too-many-arguments
215215
filt: int = FILTER_7,
216216
oversampling: int = OSR_3,
217217
temperature_compensation: bool = False,
218+
temperature_oversampling: int = OSR_0,
218219
offset: int = 0,
219220
debug: bool = False,
220221
) -> None:
@@ -226,6 +227,7 @@ def __init__( # pylint: disable=too-many-arguments
226227
self._osr = oversampling
227228
self._gain_current = gain
228229
self._temperature_compensation = temperature_compensation
230+
self._osr2 = temperature_oversampling
229231
# Typical value according the application note
230232
self._tref = 0xB668
231233
self._off_x = self._off_y = self._off_z = offset
@@ -247,6 +249,7 @@ def __init__( # pylint: disable=too-many-arguments
247249
# Set gain to the supplied level
248250
self.gain = self._gain_current
249251
self.temperature_compensation = self._temperature_compensation
252+
self.temperature_oversampling = self._osr2
250253

251254
# Set offsets to supplied level
252255
self.offset_x = self._off_x
@@ -387,7 +390,7 @@ def filter(self, level: int) -> None:
387390

388391
@property
389392
def oversampling(self) -> int:
390-
"""The oversampling level."""
393+
"""The magnetic sensor oversampling level."""
391394
return self._osr
392395

393396
@oversampling.setter
@@ -414,6 +417,21 @@ def temperature_compensation(self, temperature_compensation: bool) -> None:
414417
self.write_reg(_CMD_REG_CONF2, reg)
415418
self._temperature_compensation = temperature_compensation
416419

420+
@property
421+
def temperature_oversampling(self) -> int:
422+
"""The temperature sensor oversampling level."""
423+
return self._osr2
424+
425+
@temperature_oversampling.setter
426+
def temperature_oversampling(self, level: int) -> None:
427+
if level not in range(4):
428+
raise ValueError("Incorrect oversampling level.")
429+
reg = self.read_reg(_CMD_REG_CONF3)
430+
reg &= 0xE7FF
431+
reg |= (level & 0x3) << 12
432+
self.write_reg(_CMD_REG_CONF3, reg)
433+
self._osr2 = level
434+
417435
@property
418436
def offset_x(self) -> int:
419437
"""The X axis offset."""

0 commit comments

Comments
 (0)