# Esp32 más LCD-I2C con Python
# Librerías
from machine import Pin, I2C, sleep, SoftI2C
from lcd_api import LcdApi
from i2c_lcd import I2cLcd
import mpu6050 #recordar que este sensor tiene modulo
import time
# Crear los objetos
#para la pantalla:
I2C_ADDR = 0x27
totalRows = 2
totalColumns = 16
#para el MPU
i2c_mpu =SoftI2C (scl = Pin(5), sda = Pin(4), freq = 10000)
#para usar softI2C
#i2c = SoftI2C(scl=scl_pin, sda=sda_pin)
# Iniciar I2C Pantalla
i2c = SoftI2C(scl=Pin(22), sda=Pin(21), freq=10000)
lcd = I2cLcd(i2c, I2C_ADDR, totalRows, totalColumns)
# Iniciar I2C MPU
mpu = mpu6050.accel(i2c_mpu)
while True:
temps = (mpu.get_values())
# Recolectando datos del giroscopio
xGyroscopio = temps["GyX"] # Eje x
#print("x Gyroscopio: ", xGyroscopio)
yGyroscopio = temps["GyY"] # Eeje y
#print("y Gyroscopio: ", yGyroscopio)
zGyroscopio = temps["GyZ"] #Eje z
#print("z gyroscopio: ", zGyroscopio)
#Ajuste de unidades
gyro1 = xGyroscopio
conversion1 = round(gyro1 * 250 / 32750,2)
print("x Gyroscopio en grados:",conversion1)
gyro2 = yGyroscopio
conversion2 = round(gyro2 * 250 / 32750,2)
print("y Gyroscopio en grados:",conversion2)
gyro3 = zGyroscopio
conversion3 = round(gyro3 * 250 / 32750,2)
print("z Gyroscopio en grados:",conversion3)
sleep(40)
#mostrando x en la LCD
dato_forma1 = "{:.2f}".format(conversion1)
lcd.putstr("x Gyroscopio:")
lcd.move_to(0, 1) # Mover el cursor a la segunda fila
lcd.putstr(dato_forma1)
time.sleep(2)
lcd.clear()
#Mostrando y en la LCD
dato_forma2 ="{:.2f}".format(conversion2)
lcd.putstr("y Gyroscopio:")
lcd.move_to(0, 1) # Mover el cursor a la segunda fila
lcd.putstr(dato_forma2)
time.sleep(2)
lcd.clear()
#mostrando z en la LCD
dato_forma3 ="{:.2f}".format(conversion3)
lcd.putstr("z Gyroscopio:")
lcd.move_to(0, 1) # Mover el cursor a la segunda fila
lcd.putstr(dato_forma3)
time.sleep(2)
lcd.clear()