from machine import Pin, I2C
from time import sleep_ms
# fonction 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'octets 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]))
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)
sleep_ms(500)