超音波模組(HC-SR04)

from  http://ming-shian.blogspot.tw/2013/09/arduino-hc-sr04.html


接線圖
接線的方法很簡單,就把 Trig 接上要送 10 us 的Pin腳。Echo 接到要收訊號的 Pin腳。



至於Pin 6要怎麼量測pulse的時間長度呢?在Arduino裡有現成的指令"pulseIn ( )",說明如下:

pulseIn ( ) :讀取一個針腳的脈衝時間(HIGH或LOW)。
例如,如果value是HIGH,pulseIn ( ) 會等待引腳變為HIGH,開始計時,再等待引腳變為LOW並停止計時。返回脈衝的長度,單位微秒。如果在指定的時間內無脈衝,函數返回0。此函數的計時功能由經驗決定,長時間的脈衝計時可能會出錯。建議計時範圍從10微秒至3分鐘。(1秒=1000毫秒=1000000微秒)


const int trig = 11;
const int echo = 12;
const int inter_time = 200;
int time = 0;

void setup() {
  Serial.begin(9600);
  pinMode (trig, OUTPUT);
  pinMode (echo, INPUT);
}

void loop() {
  float duration, distance;
  digitalWrite(trig, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trig, LOW);
  duration = pulseIn (echo, HIGH);
  distance = (duration/2)/29;
  Serial.print("Data:");
  Serial.print (time/1000);
  Serial.print(", d = ");
  Serial.print(distance);
  Serial.println(" cm");
  time = time + inter_time;
  delay(inter_time);
}




留言

熱門文章