第29课 找不到设备?试试 I2C 扫描程序

我是潘,曾经是个工程师。这是为 Ardui.Co 制作的 “Arduino 公开课” 系列的入门教程。本课将介绍如何检测 I2C 设备地址。有任何疑问请在评论区提出,我会逐一回答。

I2C 总线理论上能连接127个设备。一些设备有地址引脚,可以设置不同地址,只要根据 DataSheet 引用即可。但一些设备,比如 1602 不能设置地址,而且由于厂家太多,DataSheet资料不完备,万一厂家改变了地址,设备就无法工作了。

此时,我们设计一个 I2C 扫描程序,检查设备的地址。程序实现的方式很简单,就是检查总线上没一个地址是否会响应。

关键函数是:

参考 Arduino官方文档,当 Wire.beginTransmission(address) 启动寻址后,Wire.endTransmission() 返回参数如下:

0:成功
1:数据太长,无法写入缓存
2:寻址过程中收到 NACK
3:传输数据过程中收到 NACK
4:其他错误(如,地址不存在)

程序能发现所有在线的设备:

Leave a Reply

Your email address will not be published. Required fields are marked *