Table of Contents
Toggle前言:為什麼用 Arduino UNO 搭配 HC-SR04?
如果你是 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
- 麵包板
- 杜邦線 若干條
優良廠商推薦:
Arduino UNO 與 HC-SR04 的接線教學

HC-SR04 腳位功能介紹
| 腳位 | 說明 |
|---|---|
| VCC | 5V 電源 |
| Trig | 發射觸發輸入 |
| Echo | 回波輸出(5V) |
| GND | 地 |
推薦接線方式
| HC-SR04 | Arduino UNO |
|---|---|
| VCC | 5V |
| GND | GND |
| Trig | GPIO 5 |
| Echo | GPIO 18 |

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)。
