一个关于SR04的简单问题请教-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2382|回复: 3

[未解决] 一个关于SR04的简单问题请教

[复制链接]
发表于 2021-4-11 21:08 | 显示全部楼层 |阅读模式
SR04中语句pulseIn(Echo_pin,1)/58,“/58”是怎么来的?
发表于 2021-4-11 22:26 | 显示全部楼层
本帖最后由 topdog 于 2021-4-11 23:26 编辑

设探头到物体表面的距离为L,超声在空气中的传播速率为v,从发射到接收所需的传播时间为t,发射距离和接收距离相等,那么时间就要取一半的值。则有:L=vt/2。
声音在空气中传播的速度是每秒340米,一秒换算成us是10000,L = T*340/10000/2 ,这个公式简化为L = T*0.017,0.017等价成分数,其分母就是1000/17 = 58.82352941176471,取整数公式最终可以写成L = T/58 。int型整数比float型小数占用存储体的空间少,这样写是一种技巧。

建议使用NewPing库
官方主页和解释:
https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home

esp8266用的Newping库:
https://github.com/jshaw/NewPingESP8266



发表于 2021-4-12 12:35 | 显示全部楼层
声音在干燥、摄氏 20度的空气中的传播速度大约为343米/秒,合34,300厘米/秒。
或者,我们作一下单位换算,34,300除以1,000,000厘米/微秒。
即为:0.0343厘米/微秒
再换一个角度,1/0.0343 微秒/厘米

即:29.15 微秒/厘米。s=v*t(路程=速度X时间),所以速度v=s/t=1/29
当然这s是来回2倍的s所测距离,所以v=s/2/t=s/2t=1、2X29=1/58
发表于 2021-11-22 17:38 | 显示全部楼层
有没有simulink的呢,我在simulink里进行在线测试SR04模块,建立一个简单的模型,用一个pulse generator模块产生一个周期为0.1s,脉宽占比10%的信号通过Arduino的Pin2口发送给SR04的Trig口,然后SR04的Echo口与Arduino的Pin3口连接,然后通过USB检测Pin3口的输入信号,但是在simulink里面却检测不到信号,请问大佬们,是什么情况呢?
捕获.JPG
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 19:47 , Processed in 0.079561 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表