超声波模块长啥样?

有4 个引脚:
- VCC 供电
- GND 接地
- Trig 触发(发命令)
- Echo 回响(听反弹)
还有两个头:
- 一个发波
- 一个收波
注意事项:
建议测量周期大于60ms,否则发射信号将会影响回传信号;
不要带电连接,如需要带电连接,需要使GND先连接,否则会影响工作;
测距时,被测物体的面积不少于0.5平方米且尽量平整,否则影响测试结果。
超声波模块工作原理
一共 4 步:
① 单片机给 Trig 一个短信号
相当于喊:"准备!发射!"
② 模块立刻发出 8 个超声波脉冲
"咻 ------" 飞出去了。
③ 波碰到障碍物 → 反弹回来
就像皮球撞墙弹回来。
④ 模块收到反弹波 → Echo 脚输出高电平
从发射 → 收到反弹,中间花了多少时间,就是距离!
声音在空气中速度:340 米 / 秒 = 34000 厘米 / 秒
公式:距离 (cm) = 时间 (秒) × 34000 ÷ 2
你代码里:
UltraSoundInit(); // 初始化超声波
GetDistanceDelay(); // 测一次距离
distance_cm; // 得到距离(厘米)
背后干的事:
- 给 Trig 发信号
- 发超声波
- 计时等 Echo 回来
- 用时间算出多少 cm
- 存到
distance_cm

你代码里:
if(distance_cm < 10) // 距离小于10厘米,认为有障碍物
就是靠这个判断的!
电平变化
① 一开始:全都低电平
- Trig = 低电平(0)
- Echo = 低电平(0)
② 单片机给 Trig 一个 10us 高电平
单片机做一件事:
- 把 Trig 瞬间变成 高电平(1)
- 保持 10 微秒
- 再变回 低电平(0)
就像:按一下开关,马上松开。
此时:
- Trig:0 → 1 → 0
- Echo:还是 0
③ 模块收到 Trig 信号,立刻:
- 发出 8 个超声波
- 同时把 Echo 变成高电平(1)
现在:
- Trig:0
- Echo:1
④ 超声波碰到东西反弹回来
模块一收到反弹波:
- 立刻把 Echo 从 1 → 0
现在:
- Trig:0
- Echo:1 → 0