標籤:

智能小車32:安裝超聲波測距

一、硬體準備

1.購買超聲波模塊一個

2.設計超聲波安裝電路板

剛好今天我買的小台鋸到了,可以把萬能板鋸成我想要的尺寸了。另外還要準備電鑽給電路板打孔。

切割成小切並打孔後就可以安裝線與超聲波的插座了,我選擇了2個4p的排母。

在背面需要把這4條線連上,開始用錫連,後來發現太麻煩,還不如連兩根線。

小車底盤我並沒有打孔,而是利用了現成的一道縫,安裝上兩根銅柱。再把上面的電路板固定在這兩銅柱上就行了。

最後插上超聲波模塊與電線就行了,電線的連接方式如下:

VCC->5v

GND->GND

Trig->11

Echo->12

當然Trig與Echo可以自己隨便定義,trig是發送引腳,echo是接收引腳。

全車的效果如下:

二、寫代碼調試。

添加一個超聲波模塊,寫入以下代碼:

const int trigPin = 12;

const int echoPin = 11;

boolean isCheckDistance=true;

long lastCheckDistcanceTime=0;

// 初始化

void initUltrasonic(){

pinMode(trigPin, OUTPUT);

// 要檢測引腳上輸入的脈衝寬度,需要先設置為輸入狀態

pinMode(echoPin, INPUT);

}

void checkDistance(){

//測量周期在60ms以上。以防止發射信號對迴響信號的影響

if(millis()-lastCheckDistcanceTime<60){

return;

}

lastCheckDistcanceTime=millis();

if(isCheckDistance){

// 產生一個10us的高脈衝去觸發TrigPin

digitalWrite(trigPin, LOW);

delayMicroseconds(2);

digitalWrite(trigPin, HIGH);

delayMicroseconds(10);

digitalWrite(trigPin, LOW);

// 檢測脈衝寬度,並計算出距離

float distance = pulseIn(echoPin, HIGH) / 58.00;

//如果距離小於10cm或就停止

if(distance<10){

stopGo();

}

}

}

如果沒有上面60ms的判斷,小車會出現卡頓的現象,應該是藍牙信號與超聲信號發生了衝突。在加了60ms判斷後,藍牙信號有機會在這60ms里得到處理。

因為我的小車只有通過停止來阻止前進,並沒有剎車,所以停止後,隨著慣性還會前進一段距離。這個10cm就是這段距離,這個與小車的馬達和電池有關,根據自己的情況調整。

本來我想去給我的小車做個車殼,跑了一趟中發電子市場。看了幾家買殼的,都沒有能做的。一家說可以做個車外殼的包裝,100多一個。另一家說可單獨設計個車殼,報價2千多。我考慮到我的硬體也還沒完全確定,就沒有做。


推薦閱讀:

51單片機的代碼效率提升
eM4 OS設計中的可重入性
電腦還能這麼小?指甲蓋大小的電腦也能控制機器人!
學習單片機的過程

TAG:單片機 |