摘要: 数字传感器是指将传统的模拟式传感器经过加装或改造A/D转换模块,使之输出信号为数字量(或数字编码)的传感器,主要包括:放大器、A/D转换器、微处理器(CPU)、存储器、通讯接口、温度测试电路等,在微处理器和传感器变得越来越便宜的今天,全自动或半自动(通过人工指令进行高层次操作,自动处理低层次操作)系统可以包含更多智能性功能,能从其环境中获得并处理更多不同的参数。
GY-30数字光强传感器通过I2C通信协议接入Arduino过程中的一些问题和解决方案:
网上流行着两个版本:
我用版本一的代码,发现并不对,串口打印一直显示光照强度为 0 ,很奇怪,也研究了很久,去 Wire 这个库文件看了函数实现,后来发现
Wire.requestFrom(ADDR, 2); // 2byte every time
这一行代码出现了问题。
这个 requestFrom
网上对它的描述都是:
Wire.requestFrom()
描述:
主设备请求从设备一个字节,这个字节可以被主设备用 read()或available()接受。
Wire.requrs
Wire.requrstFrom(addtess,quanTIty,stop)
参数 :
addtess : 7位的器件地址
quanTIy : 请求得到的数量 stop :布尔形,‘1’
则在请求结束后发送一个停止命令,并释放总线。‘0’则继续发送请求保持连接。
返回:
字节形 ,从从机接受到的字节数目。
然而并没有提,要用 requestFrom 前后必须要加:
Wire.beginTransmission(ADDR);
Wire.endTransmission();
这两句,分别为开始一次传输数据,和结束一次传输。
也就是将 requestFrom 这行代码改为以下,即可完成从设备向主设备发送数据
在这里也就是 gy30(从设备) 向 arduino 板(主设备)传输光强度的采集量
Wire.beginTransmission(ADDR);
Wire.requestFrom(ADDR, 2);
Wire.endTransmission();
上一篇:磁场传感器的介绍及应用
下一篇:数字温湿度传感器特点、应用及前景
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308