from machine import Pin, I2C
from i2c_lcd import I2cLcd
from time import sleep_ms
# qui prend en valeur temp_h et temp_l des registres du capteur et renvoie la température
def temp_data_to_celsius(temp_h,temp_l):
#convertir la chaine d'octet en valeur décimal
temp_h = temp_h[0]
temp_l = temp_l[0]
temp_h = temp_h << 8
temp_data = temp_h | temp_l
if temp_data & 0b1000000000000000:
temp_data = -((temp_data ^ 0b1111111111111111)+1)
temp_c = (temp_data /340.0) + 36.53
return temp_c
# Adresse I2C du Capteur MPU6050
MPU6050_ADDR = 0x68
# Adresse des registres TEMP_OUT_H
MPU6050_TEMP_OUT_H = 0x41
# Adresse des registres TEMP_OUT_L
MPU6050_TEMP_OUT_L = 0x42
# Adresse du registre d'activation du capteur :
MPU6050_PWR_MGMT_1 = 0x6B
# Initialisation du BUS I2C
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# Initialiser le registre MPU6050_PWR_MGMT_1 pour activé le Capteur.
i2c.writeto_mem(MPU6050_ADDR, MPU6050_PWR_MGMT_1, bytes([0x00]))
# Adresse I2C LCD :
AddressOfLcd = 0x27 #LCD
lcd =I2cLcd(i2c, AddressOfLcd, 2, 16)
lcd.move_to(0,0)
lcd.putstr("TEMPERATURE : ")
while True :
# Lire les deux registre temp_h et temp_l de température :
temp_h = i2c.readfrom_mem(MPU6050_ADDR, MPU6050_TEMP_OUT_H, 1)
temp_l = i2c.readfrom_mem(MPU6050_ADDR, MPU6050_TEMP_OUT_L, 1)
# Extraire la temperature :
temp_c = temp_data_to_celsius(temp_h,temp_l)
temp_c = "{:.2f}".format(temp_c)
lcd.move_to(4,1)
lcd.putstr(str(temp_c))
sleep_ms(500)