from imu import MPU6050
from time import sleep
from machine import Pin, I2C
#display oled
from ssd1306 import SSD1306_I2C
#sensor de temperatura IR
import mlx90614
#função de inicialização do display lcd
def init_i2c(scl_pin, sda_pin):
# Initialize I2C device
i2c_dev = I2C(1, scl=Pin(scl_pin), sda=Pin(sda_pin), freq=200000)
i2c_addr = [hex(ii) for ii in i2c_dev.scan()]
if not i2c_addr:
print('No I2C Display Found')
sys.exit()
else:
print("I2C Address : {}".format(i2c_addr[0]))
print("I2C Configuration: {}".format(i2c_dev))
return i2c_dev
#####################################################################
#teste do display lcd
#tamanho do display
pix_res_x = 128
pix_res_y = 64
i2c_dev = init_i2c(scl_pin=27, sda_pin=26)
oled = SSD1306_I2C(pix_res_x, pix_res_y, i2c_dev)
oled.text("leitura", 35, 10)
oled.show()
#####################################################################
#potenciometro
# Pino analógico conectado ao potenciômetro
pot_pin = 28
# Inicializa o pino como entrada analógica
pot = machine.ADC(pot_pin)
aux_analogico = 0
#####################################################################
#inicialização do acelerometro
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
imu = MPU6050(i2c)
#####################################################################
while True:
ax=round(imu.accel.x,2)
ay=round(imu.accel.y,2)
az=round(imu.accel.z,2)
gx=round(imu.gyro.x)
gy=round(imu.gyro.y)
gz=round(imu.gyro.z)
tem=round(imu.temperature,2)
print("ax",ax,"\t","ay",ay,"\t","az",az,"\t","gx",gx,"\t","gy",gy,"\t","gz",gz,"\t","Temperature",tem," ",end="\r")
sleep(0.2)
# Lê o valor analógico do potenciômetro (entre 0 e 65535)
valor_analogico = pot.read_u16()
if valor_analogico != aux_analogico:
aux_analogico = valor_analogico
# Lê o valor analógico do potenciômetro (entre 0 e 65535)
valor_analogico = pot.read_u16()
# Converte o valor analógico em uma voltagem entre 0 e 3.3V
voltagem = (valor_analogico / 65535) * 3.3
oled.fill(0)#limpa a tela
oled.text(str(round(voltagem, 2)) + ' V', 40, 30)
oled.show()