当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Arduino pulseInLong()用法及代码示例


[高级输入/输出]

说明

pulseInLong()pulseIn() 的替代品,它更擅长处理长脉冲和中断受影响的场景。

读取引脚上的脉冲(HIGHLOW)。例如,如果 valueHIGH ,则 pulseInLong() 等待引脚从 LOW 变为 HIGH ,开始计时,然后等待引脚变为 LOW 并停止计时。返回脉冲的长度(以微秒为单位),如果在超时时间内没有收到完整的脉冲,则放弃并返回 0。

此函数的时间已根据经验确定,并且可能会在较短的脉冲中显示错误。适用于长度为 10 微秒到 3 分钟的脉冲。只有在激活中断时才能使用此例程。此外,以大间隔获得最高分辨率。

用法

pulseInLong(pin, value)
pulseInLong(pin, value, timeout)

参数

pin:要读取脉冲的 Arduino 引脚的编号。允许的数据类型:int.
value:要读取的脉冲类型:或者HIGH或者LOW.允许的数据类型:int.
timeout(可选):等待脉冲开始的微秒数;默认为一秒。允许的数据类型:unsigned long.

返回

脉冲的长度(以微秒为单位)或 0 如果在超时之前没有开始脉冲。数据类型:unsigned long

示例代码

该示例在引脚 7 上打印脉冲的持续时间。

int pin = 7;
unsigned long duration;

void setup() {
  Serial.begin(9600);
  pinMode(pin, INPUT);
}

void loop() {
  duration = pulseInLong(pin, HIGH);
  Serial.println(duration);
}

注意事项和警告

此函数依赖于micros(),因此不能在noInterrupts() 上下文中使用。

相关用法


注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 pulseInLong()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。