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

更新于:2021年7月30日

2K+ 次浏览

开启您的 职业生涯

完成课程获得认证

开始学习
广告