超音波模組HC-SR04,算是常見的模組,特別是用在智慧車等專案中,用來測量前方障礙物的距離。

它的運作原理很簡單,模組會送出8個40khz的方波,如果前方有障礙物,信號就會返回,模組收到信號後,再利用返回的時間,去計算該障礙的距離。

所以大家在國外找資料時,這個模組有時會被稱做Ping,其實就是桌球的英文Ping-Pong,取桌球雙方打球時一來一回的意思吧^^

常見的HC-SR04都有4個腳,除了VCC和GND以外,Trig就是發送訊號,Echo就是接收返回的訊號。然後我們就能利用一發一收,去算出中間的距離了。

但是這太麻煩了啦,一般我們都會先找到適合的函式庫,可以省這些計算的麻煩。

從Arduino的「程式管理員」搜尋SR04,就能找到不少可用的函式庫了。

sr04-1

常被大家使用的這類函式庫還不少,今天傑森要用其中一個最簡單的:ErickSimoes/Ultrasonic,讓大家用最短的時間就學會HC-SR04的操作。

安裝好函式庫,再來就是接線了,VCC接5V,GND接地,Trig接到pin 12,Echo接到pin 13。

可以先參考範例程式:「UltrasonicSimple」,其中Ultrasonic ultrasonic(12, 13); 這行就是建立新的超音波物件,只要告訴它Trig和Echo的接腳就行了。

ultrasonic.read(),決定得到的距離是用什麼單位進行換算,不加參數就是公分,加了INC就是英寸,在台灣我們應該都是用CM,所以不加參數就行了。

測試結果就簡單的輸出到序列監視窗中,你可以在SR04前面揮手,就能看出距離的數字不斷在變化了。

/*
本程式為SR04超音波感測器的範例

首先要安裝ErickSimoes/Ultrasonic的函式庫
VCC接5V,GND接地。Trig接到pin 12,Echo接到pin 13。

HC-SR04賣場:
https://www.jmaker.com.tw/products/sr04

粉絲團:
https://www.facebook.com/jasonshow
  
傑森創工購物網:https://www.jmaker.com.tw/
傑森創工部落格:https://blog.jmaker.com.tw/
*/

#include <Ultrasonic.h>

Ultrasonic ultrasonic(12, 13);
int distance;

void setup() {
  Serial.begin(9600);
}

void loop() {
  
  distance = ultrasonic.read(); //不加參數就是輸出CM,可用read(INC)輸出英寸
  
  Serial.print("Distance in CM: ");
  Serial.println(distance);
  delay(500); //每次間格0.5秒
}