赞
踩
简介:
上篇文章中,关于九轴传感器(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,其实这是因为十进制和十六进制的关系,所以这里对于进制不做讲解,可以去其他地方仔细进行了解。
技术交流
欢迎转载、收藏、有所收获点赞支持一下!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。