Arduino 中的pulseIn() 和pulseInLong()
如果引脚上有输入脉冲,并且您需要测量脉冲的持续时间,那么该pulseIn()功能就派上用场了。
语法
语法是-
pulseIn(pin, value)
其中pin是您希望测量脉冲的引脚编号。该值是脉冲电平。它可以是高或低。
例如,如果您将该值设置为HIGH,则意味着一旦引脚上的电压从LOW变为HIGH,就会开始时间的测量。当引脚上的电压从高电平变为低电平时,它将停止。
该引脚以微秒为单位返回脉冲时间。
您还可以使用该函数的另一种形式,它接受第三个参数:超时
pulseIn(pin, value, timeout)
超时指示等待脉冲开始的微秒数。如果不指定此参数,则默认超时为1秒。换句话说,如果在调用pulseIn函数后,脉冲在1秒内(或超时)没有开始,该函数将放弃并返回0。
如果您有一个非常长的脉冲需要测量,并且在您的代码中启用了中断,您可以使用pulseInLong()而不是pulseIn。语法类似,这里的timeout参数也是可选的。此功能可用于测量长度从10微秒到3分钟的脉冲,并且仅当中断enabled.It对于较短脉冲容易出错并且对于较大脉冲提供最高分辨率时才可以使用。
示例
下面给出了一个示例实现-
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()。