众所周知的Arduino里的delay()将程序暂停指定为毫秒数的参数。
millis()另一方面,是一个返回自程序启动以来经过的毫秒数的函数。
乍一看,您可能会怀疑此功能的实用性。事实是,它在许多情况下非常有用,通常会完全“替换”delay() 。首先让我们看一下如何使用millis()几乎完全像delay()。

时序问题经常出现在编程中。
使用像millis()这样的delay()
unsigned long time_now = 0;void setup() {Serial.begin(115200);}void loop() {time_now = millis();Serial.println("Hello");while(millis() < time_now + period){//wait approx. [period] ms}}
如果您希望代码在每次循环迭代结束时仅暂停1000 ms,则上面的代码有点愚蠢。您可以 delay(1000)改用。上面的代码和delay(1000)结尾的代码之间的唯一区别是,上面的代码中的循环每秒将非常准确地运行一次。代码中的循环delay(1000)会减少运行的频率,因为它也需要一些时间执行Serial.println("Hello")。
