delay(x)
相当于usleep(x*1000)
?
如果这是真的,那么为什么会有区别,因为“Processing”可以执行“C”?
答案 0 :(得分:0)
处理可以执行C,但Arduino只包含C库的子集。显然是睡着了is not included。
This link似乎暗示延迟和延迟微秒的实现是专门为Arduino晶体和处理器设计的。
答案 1 :(得分:0)
请注意,delayMicroseconds()接受unsigned short,文档表明它对于大于16383的值不会按预期工作。因此任何超过16毫秒的值都应该使用delay()。另一种可能性是使用micros()创建一个循环:
unsigned long startTime;
unsigned long delayTime = 21500; // 21.5 mSec
startTime = micros();
while ( micros() - startTime < delayTime) {
// do something useful, or not
}
只要delayTime小于70分钟,这就应该有效。计算 micros() - startTime 可能看起来很可疑 - 如果在micros()溢出之前输入此代码并且延迟刚好在之后输入怎么办?即使micros()返回一个小于startTime的数字,算术下溢仍然会产生一个正确的时间差数。