< All Topics
Print

【感測】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); 
}

Tags:
Table of Contents