pulseInNanoseconds()

描述

功能與 pulseIn() 相同,但回傳值的單位是 ns(Nanosecond)。最長回傳的寬度約 4.2 秒。

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

語法


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

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

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

Enc3.pulseInNanoseconds(pin, state)
Enc3.pulseInNanoseconds(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)

回傳

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

範例

#include <Encoder.h>

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

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

See also

pulseIn()


函式庫參考主頁面

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.