1

It works fine when I run it for the first time but once I run my LCD code then I run my MLX90614 code, it gives an output -273 after restart it will work fine(using 2 different codes for mlx90614 and LCD).

import smbus

class MLX90614():

MLX90614_RAWIR1=0x04
MLX90614_RAWIR2=0x05
MLX90614_TA=0x06
MLX90614_TOBJ1=0x07
MLX90614_TOBJ2=0x08

MLX90614_TOMAX=0x20
MLX90614_TOMIN=0x21
MLX90614_PWMCTRL=0x22
MLX90614_TARANGE=0x23
MLX90614_EMISS=0x24
MLX90614_CONFIG=0x25
MLX90614_ADDR=0x0E
MLX90614_ID1=0x3C
MLX90614_ID2=0x3D
MLX90614_ID3=0x3E
MLX90614_ID4=0x3F

def __init__(self, address=0x5a, bus_num=1):
    self.bus_num = bus_num
    self.address = address
    self.bus = smbus.SMBus(bus=bus_num)

def read_reg(self, reg_addr):
    return self.bus.read_word_data(self.address, reg_addr)

def data_to_temp(self, data):
    temp = (data*0.02) - 273.15
    return temp

def get_amb_temp(self):
    data = self.read_reg(self.MLX90614_TA)
    return self.data_to_temp(data)

def get_obj_temp(self):
    data = self.read_reg(self.MLX90614_TOBJ1)
    return self.data_to_temp(data)

if name == "main": sensor = MLX90614()

print(sensor.get_obj_temp())

enter image description here

toyota Supra
  • 560
  • 2
  • 6
  • 9
sid kadam
  • 11
  • 1
  • When all the addresses show like that you've either got SDA & SCL swapped, you've got a broken I2C device or something is holding SCL low. – Dougie Aug 30 '20 at 22:00
  • @Dougie It's probably something holding SDA low (rather than SCL). SDA being pulled low is how a device signals to i2cdetect that it is present on the bus. – joan Aug 31 '20 at 08:16

0 Answers0