Try   HackMD

HC-SR04 超聲波感測器

基礎小知識

HC-SR04 超聲波感測器

技術規格:

  • 電源:DC 5V/2mA
  • 輸出電位( 1 / 0 ):5V / 0V
  • 精度:3 mm
  • 距離範圍:2 ~ 450 cm
  • 有效的角度:< 15。C
  • 觸發輸入信號:10uS TTL pulse
  • 接線方式:VCC、TRIG (控制端)、ECHO (接收端)、GND

模組工作原理:

  • 採用I/O觸發測距,給至少為 10us 的高電位信號
  • 模組自動發送 8 個 40KHZ 的方波,自動檢測是否有信號返回
  • 有信號返回,通過 I/O 輸出一高電位,高電位持續的時間就是超聲波從發射到返回的時間
  • 測試距離 = (高電位時間 x 聲速 (343.2 米/秒)) / 2

簡單實作

接線圖:

Vcc 5V
Trig Pin 12
Echo Pin 11
Gnd GND

程式碼:

int trigPin = 12;                  //Trig Pin
int echoPin = 11;                  //Echo Pin
long duration, cm, inches;
 
void setup() {
  Serial.begin (9600);             // 設定序列埠通訊頻率
  pinMode(trigPin, OUTPUT);        // 定義輸入及輸出 
  pinMode(echoPin, INPUT);
}
 
void loop()
{
  digitalWrite(trigPin, LOW);
  delayMicroseconds(5);
  digitalWrite(trigPin, HIGH);     // 給 Trig 高電位,持續 10微秒
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);

  pinMode(echoPin, INPUT);             // 讀取 echo 的電位
  duration = pulseIn(echoPin, HIGH);   // 收到高電位時的時間
 
  cm = (duration/2) / 29.1;         // 將時間換算成距離 cm 或 inch  
  inches = (duration/2) / 74; 

  Serial.print("Distance : ");  
  Serial.print(inches);
  Serial.print("in,   ");
  Serial.print(cm);
  Serial.print("cm");
  Serial.println();
  
  delay(250);
}  

延伸實作