# -*-coding: utf-8 -*- #import smbus import time import math import subprocess #subprocess.check_output(['i2cget', 'y 1 0x5a 0x06']) def get_data(debug_level=0): """Lecture d'une trame du capteur MLX90614 Retourne un tuple, dans l'ordre: Un code de validité, la température du ciel en °C, la température du boitier en °C, octet brut temperature du ciel,octet brut temperature du boitier Exemple: import driver_mlx ; driver_mlx.get_data(2) """ add_i2c=0x5a #bus = smbus.SMBus(1) err=0 k=0 sortie=False while (sortie==False): err=0 try : #raw_data_ciel = bus.read_word_data(add_i2c,0x07) #raw_data_boit = bus.read_word_data(add_i2c,0x06) str_data_ciel = subprocess.check_output(['i2cget', '-y','1',str(add_i2c),'0x07','w']) str_data_boit = subprocess.check_output(['i2cget', '-y','1',str(add_i2c),'0x06','w']) raw_data_ciel = int(str_data_ciel[0:6],16) raw_data_boit = int(str_data_boit[0:6],16) #except IOError: except: err=1 raw_data_ciel=0 raw_data_boit=0 if ((err==0) or (k>5)): sortie=True else: time.sleep(0.1) k+=1 tmp_ciel = raw_data_ciel*0.02-273.15 tmp_boit = raw_data_boit*0.02-273.15 if (debug_level==2): print (" la valeur binaire de température ciel vaut : {}".format(raw_data_ciel)) print (" la valeur binaire de température boitier vaut : {}".format(raw_data_boit)) if (debug_level==1): print ("la température de l'objet vaut : {}".format(tmp_ciel)); print ("\n") print ("la température du boitier vaut : {}".format(tmp_boit)); if tmp_ciel < -16: print ("Le ciel est clair") else: print ("le ciel est nuageux") return err,tmp_ciel,tmp_boit,raw_data_ciel,raw_data_boit