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;
?这里采用了五次循环? 也就是 让采集 更加准确点? 我们 在等待低电平结束 后 开启定时器?
循环变量加一次? 等待高电平结束? 定时器 关闭? 并且 计算 距离? ?函数是 返回值的 我们直接在 串口打印 距离? ?
来 我们看看最后结果
??
有兴趣的? 要源码??哞哞一下我??
?
?
|