millis函数
时间: 2023-11-15 14:04:08 浏览: 105
Arduino项目开发 millis函数.doc
5星 · 资源好评率100%
在 Arduino 编程中,millis() 函数用于返回自程序启动以来的毫秒数。它是一个无符号长整型数,可以存储大约 50 天左右的时间,然后溢出重新开始计数。通常情况下,我们使用 millis() 函数来实现计时、延迟等等功能。例如,要实现一个每隔一秒钟闪烁一次 LED 的程序,可以使用以下代码:
```
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // 点亮 LED
delay(1000); // 延迟 1 秒
digitalWrite(LED_BUILTIN, LOW); // 熄灭 LED
delay(1000); // 延迟 1 秒
}
```
上述代码使用了 delay() 函数来进行延迟,但是这种方式会阻塞程序的执行,因此无法同时执行其他任务。我们可以改用 millis() 函数来实现非阻塞式的延迟,如下所示:
```
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
static unsigned long lastTime = 0; // 上一次闪烁的时间
unsigned long currentTime = millis(); // 当前时间
if (currentTime - lastTime >= 1000) { // 如果已经过去了 1 秒钟
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN)); // 反转 LED 状态
lastTime = currentTime; // 更新上一次闪烁的时间
}
}
```
上述代码使用了一个静态变量 lastTime 来保存上一次闪烁的时间,然后每次循环都计算当前时间与上一次时间的差值,如果差值大于等于 1000 毫秒(即已经过去了 1 秒钟),就反转 LED 的状态,并更新上一次闪烁的时间。这种方式可以实现非阻塞式的延迟,程序可以同时执行其他任务。
阅读全文