Source code for PyExpLabSys.drivers.microchip_tech_mcp9808
import time
import smbus
[docs]class MCP9808(object):
""" Class for reading temperature from MCP9808 """
[docs] def __init__(self, i2cbus=1):
self.bus = smbus.SMBus(i2cbus)
self.device_address = 0x18
[docs] def read_values(self):
""" Read a value from the sensor """
self.bus.write_i2c_block_data(self.device_address, 0x01, [0x00, 0x00])
# Set range
self.bus.write_byte_data(self.device_address, 0x08, 0x03)
time.sleep(1)
data = self.bus.read_i2c_block_data(self.device_address, 0x05, 2)
temp_temp = ((data[0] & 0x1F) * 256) + data[1]
temp = temp_temp * 0.0625 # Scale
return temp
def read_resolution(self):
res = self.bus.read_byte_data(self.device_address, 0x08)
print(res)
def read_manufacturer_id(self):
data = self.bus.read_i2c_block_data(self.device_address, 0x06, 2)
man_id = data[1]
print('ID is: {}'.format(hex(man_id)))
return man_id
if __name__ == '__main__':
mcp9808 = MCP9808()
mcp9808.read_manufacturer_id()
mcp9808.read_resolution()
print()
print(mcp9808.read_values())