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.