Skip to content

Commit

Permalink
MLX90614: migrate to new I2C API
Browse files Browse the repository at this point in the history
  • Loading branch information
orangecms authored and bessman committed Oct 15, 2023
1 parent e848dcd commit b310d85
Showing 1 changed file with 18 additions and 24 deletions.
42 changes: 18 additions & 24 deletions pslab/external/MLX90614.py
Original file line number Diff line number Diff line change
@@ -1,46 +1,40 @@
from __future__ import print_function
from pslab.bus import I2CSlave


def connect(route, **args):
return MLX90614(route, **args)


class MLX90614():
class MLX90614(I2CSlave):
_ADDRESS = 0x5A
_OBJADDR = 0x07
_AMBADDR = 0x06
NUMPLOTS = 1
PLOTNAMES = ['Temp']
ADDRESS = 0x5A
name = 'PIR temperature'

def __init__(self, I2C, **args):
self.I2C = I2C
self.ADDRESS = args.get('address', self.ADDRESS)
self.OBJADDR = 0x07
self.AMBADDR = 0x06
def __init__(self):
super().__init__(self._ADDRESS)

self.source = self.OBJADDR
self.source = self._OBJADDR

self.name = 'Passive IR temperature sensor'
self.params = {'readReg': {'dataType': 'integer', 'min': 0, 'max': 0x20, 'prefix': 'Addr: '},
'select_source': ['object temperature', 'ambient temperature']}

try:
print('switching baud to 100k')
self.I2C.configI2C(100e3)
except Exception as e:
print('FAILED TO CHANGE BAUD RATE', e.message)
# try:
# print('switching baud to 100k')
# self.I2C.configI2C(100e3)
# except Exception as e:
# print('FAILED TO CHANGE BAUD RATE', e.message)

def select_source(self, source):
if source == 'object temperature':
self.source = self.OBJADDR
self.source = self._OBJADDR
elif source == 'ambient temperature':
self.source = self.AMBADDR
self.source = self._AMBADDR

def readReg(self, addr):
x = self.getVals(addr, 2)
print(hex(addr), hex(x[0] | (x[1] << 8)))

def getVals(self, addr, numbytes):
vals = self.I2C.readBulk(self.ADDRESS, addr, numbytes)
vals = self.read(numbytes, addr)
return vals

def getRaw(self):
Expand All @@ -54,15 +48,15 @@ def getRaw(self):
return False

def getObjectTemperature(self):
self.source = self.OBJADDR
self.source = self._OBJADDR
val = self.getRaw()
if val:
return val[0]
else:
return False

def getAmbientTemperature(self):
self.source = self.AMBADDR
self.source = self._AMBADDR
val = self.getRaw()
if val:
return val[0]
Expand Down

0 comments on commit b310d85

Please sign in to comment.