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()**。
廣告