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