Micropython——九轴传感器(MPU6050)的使用及算法(三)
简介:
上篇文章中,关于九轴传感器(MPU6050),学习其如何对其生成的数据偏移进行校准,这节课我们来将其中的一个问题来进行解决。关于MPU6050地址问题,我们如何学习并判断是否是MPU6050
1、看其MPU6050的数据手册,发现下面这段文字
能够发现参数WHO_AM_I 是包含了MPU6050的6为I2C地址的,而其I2C地址是储存在0x75寄存器中。
图一:MPU6050实物图
对于MPU6050来说,I2C地址是判断AD0是悬空还是接VCC。接VCC时,地址是0X69,悬空或者接地时,地址是0X68。
代码程序:
# @Time : 2022.4.20
# @Author : Xa_L
# @FileName: I2C_MPU6050.py
from machine import I2C,Pin
#初始化I2C通道1 ,使用GPIO6和GPIO7 分别作为SDA 和SCL 引脚,频率为10KHZ
i2c = I2C(id = 1 ,scl = Pin(7) ,sda = Pin(6), freq = 1000000)
#扫描I2C总线下所有设备地址,并返回对应的列表
addr_list = i2c.scan()
print(addr_list)
print(addr_list[0])
if len(addr_list) == 1:
#尝试读取该设备的0x75寄存器
who = i2c.readfrom_mem(addr_list[0],0x75,1)
print(who[0])
#如果读取数值为0x68
if who[0] == 0x68:
print("Just a MPU6050 connected")
else:
print("Have a device connected but it is not MPU6050")
elif len(addr_list) == 0:
print("Nothing connected")
else:
print("More than one device is conneted ")
运行结果:
这里我只写了连接的地址为0x68,读者可以自行重写程序看是否为其他设备。
也许有的读者会问为什么是104,不是0x68,其实这是因为十进制和十六进制的关系,所以这里对于进制不做讲解,可以去其他地方仔细进行了解。
技术交流
欢迎转载、收藏、有所收获点赞支持一下!