4
如何处理millis()转换?
我需要每五分钟读取一次传感器,但是由于我的草图还需要执行其他任务,因此我不能只delay()在两次读数之间进行。有一个“ 无延迟闪烁”教程,建议我按照以下方式进行编码: void loop() { unsigned long currentMillis = millis(); // Read the sensor when needed. if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; readSensor(); } // Do other stuff... } 问题在于,millis()大约49.7天后,该值将回滚为零。由于我的草图打算运行更长的时间,因此我需要确保翻转不会使我的草图失败。我可以轻松检测到翻转条件(currentMillis < previousMillis),但不确定该怎么做。 因此,我的问题是:处理millis()过渡的正确/最简单方法是 什么?