K210通过IIC驱动GY906红外测温模块

 K210代码:

from machine import I2C
import time
i2c = I2C(I2C.I2C3,freq=100000, scl=28, sda=29)
time.sleep_ms(100)

MLX90614_IIC_ADDR	= const(0x00)
MLX90614_TA			= const(0x06)
MLX90614_TOBJ1 		= const(0x07)
temp=0
class MLX90614:
  def __init__(self,i2c,addr=MLX90614_IIC_ADDR):
    self.addr=addr
    self.i2c=i2c

  def getObjCelsius(self):
        return self.getTemp(MLX90614_TOBJ1)	#Get celsius temperature of the object

  def getEnvCelsius(self):
        return self.getTemp(MLX90614_TA)	#Get celsius temperature of the ambient

  def getObjFahrenheit(self):
        return (self.getTemp(MLX90614_TOBJ1) * 9 / 5) + 32	#Get fahrenheit temperature of the object

  def getEnvFahrenheit(self):
        return (self.getTemp(MLX90614_TA) * 9 / 5) + 32	#Get fahrenheit temperature of the ambient


  def getTemp(self,reg):
        global temp
        temp = self.getReg(reg)*0.02-273.15	#Temperature conversion



  def getReg(self,reg):
    data = self.i2c.readfrom_mem(self.addr,reg,3) #Receive DATA
    time.sleep_ms(100)
    result = (data[1]<<8) | data[0]
    return result
ir = MLX90614(i2c)


while (1):
    ir.getObjCelsius()
    print("temp  %s *C"% (temp))

如果出现如下报错,是因为IIC出问题了:

        OSError: [Errno 5] EIO

先检查红外测温传感器与单片机的连接,若还是报错,则修改下面这句代码中的“I2C.I2C3”和“scl=28, sda=29”的引脚。

i2c = I2C(I2C.I2C3,freq=100000, scl=28, sda=29)

I2C.I2C3可修改为:I2C.I2C0,I2C.I2C1,I2C.I2C2

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值