学习如何使用millis而不是delay是学习Arduino平台的一个关键原则。函数delay()将导致在Arduino上执行的所有代码完全停止,并且将一直停止,直到delay函数完成其延迟时间。我们通常将delay()函数称为代码屏蔽.

延迟功能可能(而且很可能会导致您的系统出现各种问题)狗万2021a :

  • 暂停,但在括号中指定的时间内阻止所有其他正在执行的代码。
  • 延迟发生时,您可能会错过按钮按下、传感器输入和其他事件。
  • 外部输出,例如WS2812bled可能会停止闪烁。

使用Delay()函数的示例代码

这是一组使用delay()函数的典型代码。

/**如何使用毫秒而不是延迟*作者:TheGeekPub.com*更多Arduino教程://www.ergcommercial.com/arduino-tutorials/ */#define DELAY_TIME 100//定义我们要延迟的毫秒数。void setup(){//setup code here}void loop(){///您的附加代码here delay(delay_TIME);}

用毫秒代替延迟

millis函数起到了解救作用!使用millis,您可以在允许执行后台代码的同时,造成代码中的各种延迟。这非常适合需要多任务处理的项目!

Millis本身并不会导致任何延迟或暂停。相反,Millis是一个Arduino函数,用于跟踪自Arduino通电以来经过的毫秒数。我们可以利用它来计算循环中经过的毫秒数。

使用Millis()函数的示例代码

这是将delay()替换为millis()的典型代码

/**如何使用毫秒而不是延迟*作者:TheGeekPub.com*更多Arduino教程://www.ergcommercial.com/arduino-tutorials/ */#定义延迟时间1000无符号long lastExecutedMillis=0;//创建一个变量以保存上次执行的时间void setup(){//setup code here}void loop(){unsigned long currentMillis=millis();//如果(currentMillis-lastExecutedMillis>=DELAY\u time)//检查已过的时间,则将当前的millis复制到变量中{lastExecutedMillis=currentMillis;//保存上次执行的时间//在此处保存附加代码}

既然你知道了如何使用毫秒而不是延迟,那么你很可能会在你的大多数项目中使用毫秒。这是一种更优雅的编码方式,可以减少误按按钮或传感器事件的许多问题。

下一步

现在,您可以继续学习下一个教程或返回索引!