Arduino UNO 超音波距離感測專案:HC-SR04 接法、原理說明與 Arduino IDE 範例程式教學

如果你是 Arduino 初學者,那麼「超音波測距」就是最適合作為第一個入門專案的感測器之一。Arduino UNO 的操作簡單、腳位穩定、I/O 使用 5V,與 HC-SR04 超音波模組完美相容,接線上也比 ESP32 更省去額外步驟。

Arduino UNO 的入門優勢

  • 5V I/O,不需要做降壓

  • 腳位清楚,容易接線

  • 巨量教學資料,新手最容易入門

Arduino UNO腳位請連結之前文章 “Arduino Uno 開發板規格與接腳說明

HC-SR04 超音波模組的工作原理

40kHz 聲波的發射與反射

當給 Trig 腳位一個 10µs 高電位脈衝後,模組會發射一串超音波,聲波遇到障礙物再反射回來。

Echo 脈衝代表距離

回波被接收到後,Echo 會輸出一段「高電位脈衝」,脈衝長度表示聲波往返的時間。

距離計算公式

距離(公分)=(Echo 高電位時間 / 2) × 0.0343
(聲速:343 m/s)

範例:
Echo = 300 µs
距離 ≈ 300 × 0.0343 / 2 = 5.15 cm

實驗材料

Arduino UNO 與 HC-SR04 的接線教學

HC-SR04 Sensor

HC-SR04 腳位功能介紹

腳位說明
VCC5V 電源
Trig發射觸發輸入
Echo回波輸出(5V)
GND

推薦接線方式

HC-SR04Arduino UNO
VCC5V
GNDGND
TrigGPIO 5
EchoGPIO 18
HC-SR04

Arduino IDE程式

				
					int const trigPin = 7;  //Trig腳位7
int const echoPin = 8;  //Echo腳位8
int Intermittent;       //間歇時間
int Distance;           //距離

void setup() {
  Serial.begin(115200);
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  digitalWrite(trigPin, LOW);
}

void loop() {
  digitalWrite(trigPin, HIGH);  //發射超音波
  delay(10);                    //停頓10豪秒
  digitalWrite(trigPin, LOW);
  Intermittent = pulseIn(echoPin, HIGH);  //超音波發射到接收的時間
  Distance = Intermittent * 0.034 / 2;    //計算距離(cm)

  Serial.print(Distance);
  Serial.println(" cm");
}
				
			

測試影片

常見問題排查(Troubleshooting)

1. 距離一直顯示 0?

  • Echo 沒接好

  • Trig 腳位沒輸出

  • 物體太近(<2 cm)

  • 物體太遠(>400 cm)

2. 距離忽大忽小?

  • 測試物體角度不對

  • 線材過長造成干擾

  • 給電不足

  • 測試環境太吵(如馬達旁)

3. 測距不準?

供電不穩

建議使用 Arduino 的 USB 供電或外接穩壓 5V。

線材鬆動

超音波對接觸品質非常敏感。

障礙物材質影響

布料、泡棉、毛巾會「吸音」,導致距離錯誤。

專案延伸應用

自動避障車

偵測距離後改變行走方向。

智慧垃圾桶

靠近自動開蓋。

液位測量

測水位或油位。

停車距離警示

車庫或車模皆可使用。

結論:Arduino UNO 搭配 HC-SR04 是新手最完美入門組合

操作簡單、接線直覺、不需要做電壓轉換,加上 Arduino IDE 的大量資源,新手能快速完成一個實用又有趣的測距專案。如果你想開始進入 Arduino 世界,HC-SR04 是最棒的起手式!

常見問題 FAQ

1. HC-SR04 可以接在 3.3V 板子上嗎?

可以,但 Echo 必須降壓,不適用於 UNO 情況。

2. UNO 測距最遠是多少?

大約 4 公尺,但視環境而定。

3. 超音波能測液體嗎?

可以,但要對液面垂直。

4. 能用多顆 HC-SR04 一起測距嗎?

可以,但要「依序觸發」避免互相干擾。

5. 超音波模組防水嗎?

原版不防水,需要額外加殼或改用防水款(如 JSN-SR04T)。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端