在本教學中,我們將學習如何使用Arduino的超音波感測器進行距離測量。這包括理解物理公式並將其應用於程式碼中,以實現準確的距離估計。
Arduino Uno
Ultrasonic distance sensor 4pin
背景知識
在物理學中,速度的基本公式是 v = d/t
,其中 v
是速度, d
是距離, t
是時間。通過移項計算,我們得到 d = v x t
,即距離等於速度乘以時間。在標準大氣壓和15℃的條件下,空氣中的音速約為343.2公尺/秒。
一豪秒等於千分之一秒
一微秒等於百萬分之一秒。
步驟
-
物理公式
使用超音波感測器進行距離測量的基本公式是:
距離 = 延遲時間 × 0.034 / 2
其中:
- 延遲時間:超音波從感測器發射到接收回波的時間,以毫秒為單位。
- 0.034:聲波在空氣中的傳播速度,以公尺/秒為單位。
- 2:考慮聲波從感測器發射後撞到物體並反彈回來的過程,需要除以2得到單程距離。
-
在Arduino中實現
在Arduino程式碼中,我們使用
pulseIn
函數測量回波時間,然後套用上述公式計算距離。整個流程如下:
1. 產生一個10微秒的脈衝觸發超音波發射。
2. 通過pulseIn
函數測量回波的時間。
3. 使用上述公式計算距離。
4. 透過腳位輸出距離。
const int triggerPin = A1; // 超音波感測器的觸發腳位
const int echoPin = A0; // 超音波感測器的回波腳位
void setup() {
Serial.begin(9600); // 設定串口通信速率為9600 bps
pinMode(triggerPin, OUTPUT);
pinMode(echoPin, INPUT);
}
void loop() {
// 產生一個10微秒的觸發脈衝
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
// 使用pulseIn函數測量回波的時間
long duration = pulseIn(echoPin, HIGH);
// 計算距離,距離 = 延遲時間 × 聲波在空氣中的傳播速度 / 2
float distance = duration * 0.034 / 2;
// 顯示距離
Serial.print("Distance: ");
Serial.print(distance);
Serial.println(" cm");
delay(1000); // 延遲1秒再進行下一次測量
}
以積木寫成程式
結論
這個教學使你能夠使用Arduino和超音波感測器進行距離測量。這項技術在機器人避障、自動停車系統等應用中非常實用。請根據具體應用情境進行調整和擴展,希望這個教學對你有所幫助!