模塊名稱:HY-SRF05
工作原理:給TRIG引腳至少10us高電平后,該模塊立即發出8個40KHZ的方波,之后,ECHO引腳立馬變為高電平,發出的方波返回后,ECHO引腳變為低電平,因此,測量距離的關鍵即為測量ECHO引腳高電平時間,我試了延時和定時器兩種 ,輸入捕獲應該也可以
核心代碼,定時器版本
float Hcsr04GetLength(void )
{
int i = 0;
int t=0;
float lengthTemp = 0;
float sum = 0;
while(i!=5)
{
TRIG_Send = 1; //發送口高電平輸出
delay_us(20);
TRIG_Send = 0;
while(ECHO_Reci == 0); //等待接收口高電平輸出
OpenTimerForHc(); //打開定時器
while(ECHO_Reci == 1);
CloseTimerForHc(); //關閉定時器
i = i + 1;
t = GetEchoTimer(); //獲取時間,分辨率為1US
lengthTemp = ((float)t/58.0);//cm
sum = lengthTemp + sum ;
}
lengthTemp = sum/5.0;
return lengthTemp;
}
延時版本
float Hcsr04GetLength(void)
{
u32 t = 0;
int i = 0;
float lengthTemp = 0;
float sum = 0;
while(i!=5)
{
t=0;
ECHO_Reci=0;
TRIG_Send = 1; //發送口高電平輸出
delay_us(10);
TRIG_Send = 0;
while(ECHO_Reci == 0); //等待接收口高電平輸出
while(ECHO_Reci==1)
{
delay_us(1);//精度
t++;
}
i = i + 1;
lengthTemp = ((float)t/58);//cm
sum = lengthTemp + sum ;
}
lengthTemp = sum/5.0;
return lengthTemp;
}
完整代碼已打包為一個壓縮包
01.7z
(186.74 KB, 下載次數: 48)
2019-8-6 17:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|