https://blog.csdn.net/Hao_ge_666/article/details/117170782
接好线之后
首先安装IIC库(这个一般树莓派操作系统自带)
sudo apt install i2c-tools
再装专门为python的smbus
sudo apt install python-smbus
安完上面两个,就可以打开IIC
sudo raspi-config
之后就可以查看模块的地址了(下面代码如果运行不了,自己加管理员权限sudo)
i2cdetect -y -a 1
如果树莓派SDA和SCL接的是SDA.1和SCL.1,那么模块地址就是0*5a,如图
这样就说明检测到了模块,地址为0*5a
import smbus from time import sleep 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 comm_retries = 5 comm_sleep_amount = 0.1 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): err = None for i in range(self.comm_retries): try: return self.bus.read_word_data(self.address, reg_addr) except IOError as e: err = e #"Rate limiting" - sleeping to prevent problems with sensor #when requesting data too quickly sleep(self.comm_sleep_amount) #By this time, we made a couple requests and the sensor didn't respond #(judging by the fact we haven't returned from this function yet) #So let's just re-raise the last IOError we got raise err 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_amb_temp()) print(sensor.get_obj_temp())
标签:__,树莓,temp,bus,测温,MLX90614,红外,data,self From: https://www.cnblogs.com/gooutlook/p/16930988.html