W80x 超聲波測微距

發布於 2023-07-25 17:16:56

超聲波傳感器介紹

超聲波傳感器是一種常用的測距傳感器,它利用超聲波的傳播特性進行距離測量。它通常由超聲波發射器和接收器組成。
超聲波傳感器的工作原理是:首先,超聲波發射器發送一個超聲波脈沖信號,該脈沖信號在空氣中傳播。當這個脈沖波遇到物體時,會被物體表面反射回傳感器,並被接收器接收到。接收器會將接收到的回波轉化為電信號,並通過處理電路進行處理。
通過測量發射超聲波和接收回波之間的時間差,可以計算出超聲波傳感器到物體的距離。根據聲速(通常在空氣中為約343米/秒)和時間差,可以使用簡單的速度-時間-距離公式(d = v * t)計算出實際距離。
常見的超聲波傳感器包括HC-SR04、LV-MaxSonar、Ultrasonic Ranging Module等,它們具有不同的特性和性能參數。在選擇和使用超聲波傳感器時,需要根據具體需求和應用場景進行選擇,並注意參考傳感器的說明文檔和資料進行正確的接線和設置。

必需品

  1. 1 x 面包板
  2. 1 x W801板
  3. 1 × HC-SR04超聲波模塊
  4. 4 × 跳線

接線圖

根據電路圖連接面包板上的元件,如下圖所示。

超聲波.jpg

草圖

在計算機上打開Arduino IDE軟件。使用Arduino語言對電路進行編碼和控制。點擊“新建”打開新建草圖文件。這裡不討論具體的配置。

open.jpg

代碼

const int Triger = PA2;
const int Echo = PA1;
unsigned long timeOfFlight(); //function declaration

void setup()
{
  Serial.begin(115200);
  pinMode(Triger, OUTPUT);
  pinMode(Echo, INPUT);

}

void loop()
{
   digitalWrite(Triger, LOW);
   delay(2);
   digitalWrite(Triger, HIGH);
   delay(10);
   digitalWrite(Triger, LOW);
   float distance = (timeOfFlight()*0.0347)/2; //The temperature is 25℃ for the speed of sound.
   Serial.print("Distance:");
   Serial.print(distance);
   Serial.print("cm\n");
   delay(100);  //Delay 100ms.

}
 unsigned long timeOfFlight()
{

  unsigned long startTime, endTime;
  unsigned long duration;
  while (digitalRead(Echo) == LOW); //Wait for the Echo pin to turn high to start timing.
  startTime = micros(); //us.
  while (digitalRead(Echo) == HIGH); //Wait for the Echo pin to turn low to end timing.
  endTime = micros();
  duration = endTime - startTime;
  return duration; // return value.
}

代碼導入步驟

首先單擊Verify驗證代碼是否正確

1eb55992e618394f516378dc48b779b3.jpg

接著單擊Upload上傳代碼彈出保存框,在相應的位置編輯文件名並保存即可

27f363e694f6a241818561e7e1236ab9.jpg

16892212723385.jpg

也可以如下步驟

燒錄步驟1_副本.jpg

最後等待上傳需要十幾秒的時間,顯示以下即表示成功

6f1f1a696c4d4368c9238972d20e5c5b.jpg

代碼解釋

 endTime = micros();

micros()函數返回開發板開始運行當前程序時的微秒數。該數字在大約70分鐘後溢出,即回到零。
此函數返回自程序啟動後的微秒數(無符號長整型)。

結果

現在,通過單擊頂部綠色條右側的圖標或按Ctrl+Shift+M,在Arduino IDE中打開串口監視器觀測打印的通過超聲波測出的物體距離。
f1b6ce4e7efae324e5ed81b8cb5c263c.jpg

HC-SR04.jpg

新手一個,如有更精確的方法,希望各位大佬不吝賜教!
1 條評論

發布
問題