超音波模組(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)。
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);
}
接線圖
接線的方法很簡單,就把 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);
}
留言
張貼留言