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.