#define TrigPin 2
#define EchoPin 3
float Value_cm;
void setup()
{
Serial.begin(9600);
pinMode(TrigPin, OUTPUT);
pinMode(EchoPin, INPUT);
}
void loop()
{
digitalWrite(TrigPin, LOW); //低高低電平發一個短時間脈沖去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
Value_cm = float( pulseIn(EchoPin, HIGH) * 17 )/1000; //將回波時間換算成cm
//讀取一個引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會等待引腳變為HIGH,開始計時,再等待引腳變為LOW并停止計時。
//返回脈沖的長度,單位微秒。如果在指定的時間內無脈沖函數返回。
//此函數的計時功能由經驗決定,長時間的脈沖計時可能會出錯。計時范圍從10微秒至3分鐘。(1秒=1000毫秒=1000000微秒)
//接收到的高電平的時間(us)* 340m/s / 2 = 接收到高電平的時間(us) * 17000 cm / 1000000 us = 接收到高電平的時間 * 17 / 1000 (cm)
Serial.print(Value_cm);
Serial.println("cm");
delay(1000);
}
|