|
#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); //低高低電平發(fā)一個(gè)短時(shí)間脈沖去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin, LOW);
Value_cm = float( pulseIn(EchoPin, HIGH) * 17 )/1000; //將回波時(shí)間換算成cm
//讀取一個(gè)引腳的脈沖(HIGH或LOW)。例如,如果value是HIGH,pulseIn()會(huì)等待引腳變?yōu)镠IGH,開始計(jì)時(shí),再等待引腳變?yōu)長(zhǎng)OW并停止計(jì)時(shí)。
//返回脈沖的長(zhǎng)度,單位微秒。如果在指定的時(shí)間內(nèi)無脈沖函數(shù)返回。
//此函數(shù)的計(jì)時(shí)功能由經(jīng)驗(yàn)決定,長(zhǎng)時(shí)間的脈沖計(jì)時(shí)可能會(huì)出錯(cuò)。計(jì)時(shí)范圍從10微秒至3分鐘。(1秒=1000毫秒=1000000微秒)
//接收到的高電平的時(shí)間(us)* 340m/s / 2 = 接收到高電平的時(shí)間(us) * 17000 cm / 1000000 us = 接收到高電平的時(shí)間 * 17 / 1000 (cm)
Serial.print(Value_cm);
Serial.println("cm");
delay(1000);
}
|
|