1 超声波模块
2超声波模块原理
3 结合主要讲解代码
1 实物图
引脚
2超声波模块原理
我们在初始化 都要 发送和接收端 拉低 首先给输出端 至少 10us的 高电平持续时间 之后要把它拉低 等待输入高电平打开 定时器 计算 高电平持续的时间 最后一步 等待高电平的结束 就把定时器关闭 这时就证明 发送和返回的时间 已经算完了一次 就开始用 计算 距离
并且注意 高电平持续的时间 并不是定时器直接计算出来的 而是你通过定时器计算过后 要 乘 1000 才是 超声波高电平持续的时间 3 结合代码3 结合代码
三个公式
输入的=定时器*1000; //这个只是返回高电平持续时间的 现在我们还差一个
(输入+输出)+=定时器的 // 这个才是发送和返回的
距离=(输出+输入)/58
3 结合主要代码讲解
while(i!=5)
{
hc_sr04_Tirg(1);
delay_ms(20);
hc_sr04_Tirg(0);
while(hc_sr04_EchoReceive==0);
OPEN_TIM5_Counter();
i++;
while(hc_sr04_EchoReceive==1);
OFF_TIM5_Counter();
hc_sr04InOuttimes=Get_Echo_Tim();
hc_sr04lens =((float)hc_sr04InOuttimes/58.0);
sum=sum+hc_sr04lens;
}
hc_sr04lens=sum/5.0;
return hc_sr04lens;
这里采用了五次循环 也就是 让采集 更加准确点 我们 在等待低电平结束 后 开启定时器
循环变量加一次 等待高电平结束 定时器 关闭 并且 计算 距离 函数是 返回值的 我们直接在 串口打印 距离
来 我们看看最后结果