pulseIn()

描述

讀取 pin 腳上的脈衝(高或低電位)持續時間。舉個例子,如果 state 輸入值是 HIGHpulseIn() 會等 pin 腳上的電位變成 HIGH 之後開始計時,等到又變回 LOW 才停止;之後會回傳脈衝的持續時間,單位是微秒,最長量測寬度約 71 分鐘。假如在指定的時間內沒有出現任何脈衝,則會放棄讀取並回傳 0。

注意:此函式只可在 PWM 脈波捕捉模式下使用。另外,此函式不能和同 Encoder 函式庫內的 attachInterrupt() 共用,在用 attachInterrupt() 掛載 ISR 後,呼叫 pulseIn() 是沒作用的。

語法


Enc0.pulseIn(pin, state)
Enc0.pulseIn(pin, state, timeout)

Enc1.pulseIn(pin, state)
Enc1.pulseIn(pin, state, timeout)

Enc2.pulseIn(pin, state)
Enc2.pulseIn(pin, state, timeout)

Enc3.pulseIn(pin, state)
Enc3.pulseIn(pin, state, timeout)

參數

Enc0、Enc1、Enc2、Enc3:分別對應 ENC0、ENC1、ENC2、ENC3 編碼器介面。

pin:指定要讀取脈衝的針腳,0 指定針腳 A、1 指定針腳 B、2 指定針腳 Z(其它數值沒有作用)。

state:要讀取的脈衝型態,HIGHLOW

timeout:設定一段時間來等待脈衝開始,如果沒有輸入此參數或輸入 0,表示會一直等待至有指定的脈衝到來。(unsigned long 型別,單位:us)

回傳

脈衝的時間長度(單位是 us)。

範例

#include <Encoder.h>

void setup() {
  Serial.begin(9600);
  Enc0.begin(MODE_CAPTURE);
}

void loop() {
  Serial.println(Enc0.pulseIn(0, HIGH, 1000L));
  delay(100);
}

See also

pulseInNanoseconds()


函式庫參考主頁面

The text of the 86Duino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.