查看I2C超声波模块的源代码
←
I2C超声波模块
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
你刚才请求的操作只对属于该用户组的用户开放:
用户
您可以查看并复制此页面的源代码:
[[Image:超声波-IIC.png|400px|thumb|超声波I2C模块]] === 产品简介 === <br> 超声波模块采用IIC接口通讯模式,可提供 2cm-300cm的非接触式距离感测功能,测距精度可达高到 3mm。 <br> <br> <font color="darkorenge">注意:</font> 1、此模块不宜带电连接,若要带电连接,则先让模块的 GND端先连接,否则会影响模块的正常工作。 2、测距时,被测物体的面积不少于 0.5平方米且平面尽量要求平整,否则影响测量的结果 === 规格参数 === *供电电压:DC3.3V-DC5V *工作电流:约3mA *IIC通讯地址:0x57(不可更改) *感应角度:约30度 *探测距离:2cm-300cm *精度:3mm *接口类型:PH2.0-4P *外形尺寸:单位mm [[Image:乐高兼容模块外壳尺寸.png|400px]] === 工作原理 === [[Image:IIC传输格式.png|600px|超声波I2C模块-IIC传输格式]] [[Image:IIC命令格式.png|600px|超声波I2C模块-IIC命令格式]] <br> 向模块写入 0X01,模块开始测距;等待 100mS(模块最大测距时间)以上。直接读出 3 个距离数据。BYTE_H,BYTE_M 与 BYTE_L。 距离计算方式如下(单位 mm): *'''距离=((BYTE_H<<16)+(BYTE_M<<8)+ BYTE_L)/1000''' === 引脚说明 === [[Image:IIC超声波-pinout.png|600px|LEGO-IIC超声波-PINOUT]] === 应用示例 === '''电路连接''' {|border="1" cellspacing="0" cellpadding="5" width="600px" |- |align="center"|超声波模块 |align="center"|Arduino UNO |- |align="center"|GND |align="center"|GND |- |align="center"|VCC |align="center"|+5V |- |align="center"|SDA |align="center"|A4/SDA |- |align="center"|SCL |align="center"|A5/SCL |} '''示例代码''' <br> <source lang="c"> #include <Wire.h> float distance = 0; //距离数据十进制值 float ds[3]; //3个8BIT距离数据 void setup() { Serial.begin(9600); //定义串口波特率9600 出厂默认波特率9600 Wire.begin(); Serial.println("RCWL-1605-IIC 测距开始:"); } void loop() { char i = 0; ds[0]=0; ds[1]=0; ds[2]=0; //初始化3个8BIT距离数据为0 Wire.beginTransmission(0x57); //地址为0X57 写8位数据为AE,读8位数据位AF Wire.write(1); //写命令0X01,0X01为开始测量命令 Wire.endTransmission(); //IIC结束命令 delay(120); //测量周期延时,一个周期为100mS,设置120MS,留余量 Wire.requestFrom(0x57,3); //地址为0X57 读3个8位距离数据 while (Wire.available()) { ds[i++] = Wire.read(); } distance=(ds[0]*65536+ds[1]*256+ds[2])/10000; //计算成CM值 Serial.print("距离:"); if ((1<=distance)&&(900>=distance)) //1CM-9M之间数值显示 { #if 0 Serial.println(); Serial.print(ds[0]); Serial.println(); Serial.print(ds[1]); Serial.println(); Serial.print(ds[2]); Serial.println(); #endif //#if 1,输出IIC的3个距离数据 Serial.print(distance); Serial.print(" CM "); } else { Serial.print(" - - - - "); //无效数值数值显示 - - - - } Serial.println(); //换行 delay(30); //单次测离完成后加30mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。 delay(100); //延时100mS再次测量,延时可不要 } </source> 程序运行结果:超声波对着墙,测出实时距离,串口打印测距结果: ===参考资料=== <br> * [https://pjfcckenlt.feishu.cn/wiki/wikcnkV8lr33YFQTfaHyMogLhUg 超声波芯片手册] <!-- <p>'''垃圾桶安装视频教程'''</p> <html> <iframe id='rb' width='40%' src='https://www.ixigua.com/iframe/7212509672224326177?autoplay=0' frameborder=0 referrerpolicy="unsafe-url" allowfullscreen></iframe> <script type="text/javascript"> document.getElementById("rb").style.height=document.getElementById("rb").scrollWidth*0.7+"px"; </script> </html> --> ---- {| border="0" cellpadding="5" width="100%" |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|''' <font size="+1">[http://www.yfrobot.com.cn 访问论坛]</font>''' |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|''' <font size="+1">[http://www.yfrobot.com.cn/thread-2235-1-1.html 论坛邀请码获取]</font>''' |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|'''<font size="+1">[https://jq.qq.com/?_wv=1027&k=466mOjv 技术交流群]</font>''' |} {| border="0" cellpadding="5" width="100%" |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|''' <font size="+1">[http://yfanmcu.taobao.com 淘宝企业店]</font>''' |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|''' <font size="+1">[http://yfrobot.taobao.com 淘宝直营店]</font>''' |width="33%" valign="top" align="center" bgcolor=#d3d7d4 style="border-radius:5px;"|'''<font size="+1">[[联系我们]]</font>''' |}
返回
I2C超声波模块
。
导航菜单
个人工具
登录
名字空间
页面
讨论
不转换
变种
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
台灣正體
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
YF-论坛提问
YFRobot-直营店
YFRobot-企业店
Arduino
Arduino之入门篇
Arduino入门教程
Arduino语法参考
Arduino库
Arduino核心代码
编程平台
Mixly库
Mind+库
MakeCode扩展
传感器系列
积木式传感器系列
黑板传感器系列
蓝板传感器系列
Micro:Bit
Micro:Bit 通用基础教程
Valon智能车
Valon-I
帮助
帮助
wiki语法参考
工具箱
链入页面
相关更改
特殊页面
页面信息