超聲波模組 HC-SR04 是 Arduino 初學者最常接觸的感測器之一。不論是想製作自動避障小車、智慧感應垃圾桶,還是倒車雷達,都離不開這顆高性價比的測距神器。
本文將帶你了解 HC-SR04 的工作原理,並提供最清晰的接線圖與程式碼,讓你 5 分鐘內快速上手!
什麼是 HC-SR04 超聲波感測器?
HC-SR04 是一款利用超聲波反射原理來測量距離的模組。它的有效測距範圍約為 2cm 至 400cm,測量精度可達 3mm。
工作原理
-
發射聲波:模組的
Trig(觸發)腳位收到高電位訊號後,會自動發出 8 個 40kHz 的超聲波脈衝。 -
接收聲波:聲波碰到物體反射回來,被
Echo(接收)腳位接收。 -
計算距離:
Echo腳位保持高電位(HIGH)的時間,就是超聲波往返的時間。
距離計算公式: (註:0.0343 cm/μs 為常溫下的音速)
準備材料
-
Arduino Uno R3 開發板 × 1
-
HC-SR04 超聲波模組 × 1
-
麵包板 × 1
-
杜邦線(公對公) × 4 條
-
USB 數據線 × 1
????️ 準備好你的硬體工具了嗎? 推薦選購:米羅科技 – Arduino 程式學習爆款套件組(包含豐富驅動專案模組)
硬體接線指南
HC-SR04 共有 4 個引腳,請依照下方引腳對照表進行連接:
Arduino 範例程式碼
請將以下程式碼複製到 Arduino IDE 中,並燒錄至你的 Arduino Uno R3:
// 定義引腳
const int trigPin = 9;
const int echoPin = 10;
// 定義變數
long duration;
int distance;
void setup() {
pinMode(trigPin, OUTPUT); // 設定 Trig 為輸出模式
pinMode(echoPin, INPUT); // 設定 Echo 為輸入模式
Serial.begin(9600); // 初始化序列埠通訊,波特率 9600
}
void loop() {
// 清空 Trig 腳位
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
// 發送 10 微秒的高電位脈衝以觸發測距
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// 讀取 Echo 腳位返回高電位的持續時間(微秒)
duration = pulseIn(echoPin, HIGH);
// 計算距離(公分)
distance = duration * 0.0343 / 2;
// 在序列埠監視器(Serial Monitor)輸出結果
Serial.print("測量距離: ");
Serial.print(distance);
Serial.println(" cm");
// 延遲 500 毫秒後進行下一次測量
delay(500);
}
測試與除錯
-
將 Arduino 連接至電腦。
-
在 Arduino IDE 中選擇正確的開發板(Arduino Uno)與 Com Port。
-
點擊 上傳(Upload)。
-
打開右上角的 序列埠監視器(Serial Monitor),並將波特率設定為 9600。
-
用手或障礙物在感測器前移動,即可即時看到距離變化!
常見問題與排除
-
顯示 0 cm 或數值異常:檢查接線是否鬆脫,特別是 Trig 與 Echo 是否接反。
-
無法精準測距:超聲波無法對軟質物體(如毛絨玩具)或傾斜表面進行精確測距,建議測試時使用平整的硬物。
???? 延伸閱讀與推薦課程
-
???? 進階顯示模組控制:
-
???? 上一篇教學:
-
???? 下一篇教學:
-
???? 教學總索引:
???? 米羅科技小提示:如果想將超聲波測距結果同步顯示在螢幕上,強烈推薦搭配 LCD 1602 I2C 模組 一起實作!