|
模塊名稱:HY-SRF05
工作原理:給TRIG引腳至少10us高電平后,該模塊立即發(fā)出8個40KHZ的方波,之后,ECHO引腳立馬變?yōu)楦唠娖剑l(fā)出的方波返回后,ECHO引腳變?yōu)榈碗娖剑虼耍瑴y量距離的關(guān)鍵即為測量ECHO引腳高電平時間,我試了延時和定時器兩種 ,輸入捕獲應(yīng)該也可以
核心代碼,定時器版本
float Hcsr04GetLength(void )
{
int i = 0;
int t=0;
float lengthTemp = 0;
float sum = 0;
while(i!=5)
{
TRIG_Send = 1; //發(fā)送口高電平輸出
delay_us(20);
TRIG_Send = 0;
while(ECHO_Reci == 0); //等待接收口高電平輸出
OpenTimerForHc(); //打開定時器
while(ECHO_Reci == 1);
CloseTimerForHc(); //關(guān)閉定時器
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; //發(fā)送口高電平輸出
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, 下載次數(shù): 48)
2019-8-6 17:05 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
評分
-
查看全部評分
|