找資料?
【感測】HC-SR04超音波基礎
簡介
超音波是一項經常使用的距離偵測方式。DUAL22開發板有三組超音波的接口位置,分別對應前、左、右,三個方向。我們提供快速應用的函數庫:ObjSeeking();ObjDistance()。如後程式範例。
當然,前述函數庫不符合你的需求,也可以進一步地由驅動超音波模組相關基礎設定開始,自行編輯個人所需要的程式功能。此時,當你控制細部設定時,或許會用到相關GPIO接線位置,如下圖。
函數庫
DUAL22函數庫參照手冊(PDF),下載。
#include “DUAL22.h”
- 超音波物件偵測:bool ObjSeeking(String P, int Thresh)
- 指定(P)並運用超音波偵測物件是否進入搜尋範圍(Thresh)。
- 本函數無回傳值。控制參數,如下:
- 參數 String P : 偵測方向, “F”->前; “L”->左; “R”->右。
- 參數 int Thresh : 設定偵測範圍,公分(CM)。
- 超音波距離偵測:float ObjDistance(String P)
- 指定(P)並運用超音波進行物件距離量測。
- 本函數回傳值為浮點數,回傳與物件的距離(單位為公分)。控制參數,如下:
- 參數 String P : 偵測方向, “F”->前; “L”->左; “R”->右。
韌體範例說明
範例(一)、防撞(倒車)雷達警示範例。
#include "DUAL22.h"
void setup() {
// put your setup code here, to run once:
DUAL22Inital(); //初始化DUAL22開發板
}
void loop() {
//物體是否進入前方超音波10公分以內的距離, 若條件為真, 蜂鳴器發出指定頻率聲響。
if(ObjSeeking("F", 10)){
Buzzer_Alarm(300, 800, 100);
Buzzer_Alarm(200, 500, 0);
}
//物體是否進入前方超音波30公分以內的距離, 若條件為真, 蜂鳴器發出指定頻率聲響。
else if(ObjSeeking("F", 30)){
Buzzer_Alarm(500, 500, 100);
Buzzer_Alarm(200, 500, 0);
}
}
範例(二)、顯示超音波偵測物件之距離數據
#include "DUAL22.h"
void setup() {
// put your setup code here, to run once:
DUAL22Inital();
Serial.begin(115200); //串列埠設定
}
void loop() {
//指定左側(L)超音波,每0.5秒回傳一筆所偵測的距離(單位公分)。
Serial.println(ObjDistance("L"));
delay(500);
}