找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 8659|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

超聲波測(cè)距程序及調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:77967 發(fā)表于 2015-6-2 21:00 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
const int TrigPin = 2;
const int EchoPin = 3;
float cm;
void setup()
{
    Serial.begin(9600);
    pinMode(TrigPin, OUTPUT);
    pinMode(EchoPin, INPUT);
}
void loop()
{
    //發(fā)一個(gè)10ms的高脈沖去觸發(fā)TrigPin
    digitalWrite(TrigPin, LOW);
    delayMicroseconds(2);
    digitalWrite(TrigPin, HIGH);
    delayMicroseconds(10);
    digitalWrite(TrigPin, LOW);

    cm = pulseIn(EchoPin, HIGH) / 58.0; //算成厘米
    cm = (int(cm * 100.0)) / 100.0; //保留兩位小數(shù)
    Serial.print(cm);
    Serial.print("cm");
    Serial.println();
    delay(1000);
}


燒載完成后打開(kāi)串口窗口,保證電路的接線正確,把模塊平行對(duì)著被測(cè)物體,可以看到上圖所示的測(cè)距距離。來(lái)看一下代碼: pulseIn(EchoPin, HIGH),此函數(shù)是計(jì)算EchoPin的高電平時(shí)間,先將引腳拉高,開(kāi)始計(jì)時(shí),直到該引腳變?yōu)榈碗娖綖橹,單位為ms,如果超出還沒(méi)讀取到的話,將返回0.
cm = pulseIn(EchoPin, HIGH) / 58.0;可能很多人會(huì)問(wèn)為什么要除以58.0呢,聲速是340m/s換算一下就是函數(shù)返回的值是ms,1s=1000ms,cm=t/1000*34/2=0.017*t=t/58.8,所以會(huì)有除以58.0.大家敲完代碼測(cè)試出結(jié)果了是不是很高興,但是,仔細(xì)想一想,聲音要是在真空是什么情況,原來(lái)真空下聲音是不能傳播的,在不同溫度和壓強(qiáng)下的聲速是不一樣的

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:1 發(fā)表于 2015-6-2 22:24 來(lái)自手機(jī) | 只看該作者
要是有圖片就更好了
回復(fù)

使用道具 舉報(bào)

板凳
ID:82869 發(fā)表于 2015-6-13 10:30 | 只看該作者
再詳細(xì)點(diǎn)就更好了
回復(fù)

使用道具 舉報(bào)

地板
ID:83149 發(fā)表于 2015-6-16 13:48 | 只看該作者
嗯!樓主說(shuō)的很對(duì),昨天剛剛看到超聲波避障,但還沒(méi)有看到LCD輸出顯示部分。其中就講到聲音傳播速度會(huì)受到溫度和密度的影響,但是日常使用中也就是個(gè)大概值,誤差可以忽略。
回復(fù)

使用道具 舉報(bào)

5#
ID:84605 發(fā)表于 2015-7-2 18:58 | 只看該作者
    是應(yīng)該更詳細(xì)些。也沒(méi)有說(shuō)明使用的元器件。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表