在本教學中,我們將學習如何使用Arduino的超音波感測器進行距離測量。這包括理解物理公式並將其應用於程式碼中,以實現準確的距離估計。

Arduino Uno

使用Arduino超音波感測器測距:實現精確的距離估計

Ultrasonic distance sensor 4pin 

使用Arduino超音波感測器測距:實現精確的距離估計

背景知識

在物理學中,速度的基本公式是 v = d/t,其中 v 是速度, d 是距離, t 是時間。通過移項計算,我們得到 d = v x t,即距離等於速度乘以時間。在標準大氣壓和15℃的條件下,空氣中的音速約為343.2公尺/秒。

一豪秒等於千分之一秒

一微秒等於百萬分之一秒。

步驟

  1. 物理公式

    使用超音波感測器進行距離測量的基本公式是:
    距離 = 延遲時間 × 0.034 / 2

    其中:

    • 延遲時間:超音波從感測器發射到接收回波的時間,以毫秒為單位。
    • 0.034:聲波在空氣中的傳播速度,以公尺/秒為單位。
    • 2:考慮聲波從感測器發射後撞到物體並反彈回來的過程,需要除以2得到單程距離。

     

  2. 在Arduino中實現

    在Arduino程式碼中,我們使用 pulseIn 函數測量回波時間,然後套用上述公式計算距離。

    整個流程如下:
    1. 產生一個10微秒的脈衝觸發超音波發射。
    2. 通過 pulseIn 函數測量回波的時間。
    3. 使用上述公式計算距離。
    4. 透過腳位輸出距離。

使用 Arduino 與 4pin 超音波距離感測器測距:實

const int triggerPin = A1; // 超音波感測器的觸發腳位
const int echoPin = A0;   // 超音波感測器的回波腳位

void setup() {
  Serial.begin(9600);     // 設定串口通信速率為9600 bps
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);
}

void loop() {
  // 產生一個10微秒的觸發脈衝
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(triggerPin, LOW);

  // 使用pulseIn函數測量回波的時間
  long duration = pulseIn(echoPin, HIGH);

  // 計算距離,距離 = 延遲時間 × 聲波在空氣中的傳播速度 / 2
  float distance = duration * 0.034 / 2;

  // 顯示距離
  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println(" cm");

  delay(1000); // 延遲1秒再進行下一次測量
}

 

 

以積木寫成程式

未命名

 

結論

這個教學使你能夠使用Arduino和超音波感測器進行距離測量。這項技術在機器人避障、自動停車系統等應用中非常實用。請根據具體應用情境進行調整和擴展,希望這個教學對你有所幫助!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 黃健哲 的頭像
    黃健哲

    小黃老師嘿技術

    黃健哲 發表在 痞客邦 留言(0) 人氣()