智能小車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:單片機 |