[高级输入/输出]
说明
pulseInLong()
是 pulseIn() 的替代品,它更擅长处理长脉冲和中断受影响的场景。
读取引脚上的脉冲(HIGH
或 LOW
)。例如,如果 value
为 HIGH
,则 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 pulseIn()用法及代码示例
- Arduino pinMode()用法及代码示例
- Arduino pow()用法及代码示例
- Arduino long用法及代码示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代码示例
- Arduino ~用法及代码示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代码示例
- Arduino const用法及代码示例
- Arduino Ethernet - server.begin()用法及代码示例
- Arduino ArduinoBLE - BLEService()用法及代码示例
- Arduino digitalWrite()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代码示例
- Arduino Servo - attach()用法及代码示例
- Arduino write()用法及代码示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代码示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代码示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代码示例
- Arduino WiFiNINA - WiFi.config()用法及代码示例
- Arduino MKRGSM - sms.read()用法及代码示例
- Arduino MKRNB - getCurrentCarrier()用法及代码示例
- Arduino Scheduler - Scheduler.startLoop()用法及代码示例
- Arduino Arduino_LSM9DS1 - magneticFieldAvailable()用法及代码示例
- Arduino MKRWAN - available()用法及代码示例
- Arduino ArduinoBLE - BLE.poll()用法及代码示例
- Arduino ArduinoBLE - bleCharacteristic.hasDescriptor()用法及代码示例
注:本文由纯净天空筛选整理自arduino.cc大神的英文原创作品 pulseInLong()。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。