Arduino 中的 pulseIn() 和 pulseInLong()


如果引腳上有脈衝輸入,並且需要測量脈衝持續時間,則可以使用 **pulseIn()** 函式。

語法

語法如下:

pulseIn(pin, value)

其中 **pin** 是您希望測量脈衝的引腳編號。**value** 是脈衝的電平。它可以是 HIGH 或 LOW。

例如,如果將值設定為 HIGH,則意味著一旦引腳上的電壓從 LOW 變為 HIGH,時間測量將開始。當引腳上的電壓從 HIGH 變為 LOW 時,它將停止。

**pin** 返回以微秒為單位的脈衝時間。

您還可以使用函式的另一種形式,該形式包含第三個引數:**timeout**

pulseIn(pin, value, timeout)

超時指示等待脈衝啟動的微秒數。如果未指定此引數,則預設超時為 1 秒。換句話說,如果在呼叫 **pulseIn** 函式後,脈衝在 1 秒(或超時)內沒有啟動,則此函式將放棄並返回 0。

如果需要測量很長的脈衝,並且在程式碼中啟用了中斷,則可以使用 **pulseInLong()** 代替 **pulseIn**。語法類似,超時引數在這裡也是可選的。此函式可用於測量長度從 10 微秒到 3 分鐘的脈衝,並且僅在啟用中斷時才能使用。對於較短的脈衝,它容易出錯,並且對於較長的脈衝,它具有最高的精度。

示例

下面給出一個示例實現:

int pulsePin = 6;
unsigned long pulseDuration;

void setup() {
   Serial.begin(9600);
   pinMode(pulsePin, INPUT);
}
void loop() {
   pulseDuration = pulseIn(pulsePin, HIGH);
   Serial.println(pulseDuration);
}

**pulseInLong** 的語法保持不變;只有函式名稱從 **pulseIn()** 更改為 **pulseInLong()**。

更新於:2021年7月30日

2K+ 次瀏覽

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告