HC-SR04 是一個超音波感測器,它可以探測2cm-400cm間的距離,精度為 0.3 cm,感應角度為 15 度。HC-SR04左邊那顆被標示為 T 的是發射器,會發出 40 kHz 的超音波,而右邊那顆被標示為 R 的是接收器,可以接收反射回來的超音波。
HC-SR04共有 4 支接腳,從左至右分別為 Vcc、Trig、Echo 和 GND。除了Vcc和GND 外,實驗中我們利用Arduino的PIN 12來提供給Trig信號(10 微秒的 5V 高電位信號),當對HC-SR04 的Trig輸入信號後,就會觸發超音波的發射,接著 Echo 腳位就會處於 5V 高電位狀態;如果接收到反射回來的超音波信號,則 Echo 腳位就變成 0V 低電位狀態:
| 
HC-SR04 | 
Arduino | 
| 
Vcc | 
+5V | 
| 
Trig | 
可接PIN12 | 
| 
Echo | 
可接PIN13 | 
| 
GND | 
GND | 
在超音波發射之後,只要根據Echo 的高電位持續時間,再搭配音速每秒 344 公尺(每公分約29微秒),便可計算出超音波感應器與障礙物之間的距離,由於音波往返是走了兩倍距離,因此 Echo 的高電位持續時間要除以 2才是與障礙物之間的距離。
以下是參考玩物尚誌blog   http://blog.lyhdev.com/2012/10/arduino-1hc-sr04.html的程式碼:
| 
#define
  TRIGPIN 12 
#define
  ECHOPIN 13 
#define
  LED1 7 
#define
  LED2 8 
long
  ping() { 
  digitalWrite(TRIGPIN, LOW); 
  delayMicroseconds(2); 
  digitalWrite(TRIGPIN, HIGH); 
  delayMicroseconds(10);  //針對Trig送10 microsecond的HIGH訊號出去 
  digitalWrite(TRIGPIN, LOW); 
  return pulseIn(ECHOPIN, HIGH)/58;  // microseconds除上58就是距離(cm) 
} 
void
  setup() { 
  pinMode(TRIGPIN, OUTPUT); 
  pinMode(ECHOPIN, INPUT); 
  pinMode(LED1, OUTPUT); 
  pinMode(LED2, OUTPUT); 
} 
void
  loop() { 
  long cm = ping(); 
  if (cm <= 100) { 
    digitalWrite(LED1, HIGH); 
    delay(cm*1.5 + 10); 
    digitalWrite(LED1, LOW); 
    digitalWrite(LED2, HIGH); 
    delay(cm*1.5 + 10); 
    digitalWrite(LED2, LOW); 
  } 
  delay(100); 
} | 




 
 
 
沒有留言:
張貼留言