Arduino使用 millis()延时实现


unsigned long previousMillis = 0;
boolean delayState = false;

void setup() {
  pinMode(7, INPUT_PULLUP);
  Serial.begin(115200);
}

void loop() {
  ///按键引脚触发延时//
  if (digitalRead(7) == LOW) {
    delayState = true;
  }
  if (delayState == true) {
    delay(100);
    if (doDelayMillisTime(5000 , false) == true) {
      Serial.println("key pin delayMillisTime!");
      delayState = false;
    }
  }

  延时//
  if (doDelayMillisTime(5000 , false) == true) {
    Serial.println("delayMillisTime!");
  }
}

boolean doDelayMillisTime(long interval , boolean state) {
  unsigned long currentMillis = millis();
  if (currentMillis - previousMillis >= interval) {
    previousMillis = currentMillis;
    state = !state;
  }
  return state;
}
### 回答1: Arduino millis()函数是一个计时器函数,用于返回自Arduino板启动以来的毫秒数。它可以用于测量时间间隔,控制程序的执行时间,或者实现定时器功能。在使用millis()函数时,需要注意数据类型为unsigned long,因为millis()函数返回的数值可能会非常大。同时,需要注意在程序中不要使用delay()函数,因为它会阻塞程序的执行,而使用millis()函数可以实现非阻塞的延时效果。 ### 回答2: Arduino millis() 是一个系统定时器,用于计算自开启后的毫秒数。它是一个无参数的函数,返回一个 unsigned long 类型的整数值,表示自开启以来经过的毫秒数。 millis() 函数是想要在 Arduino 控制器上生成时间延迟的最重要的函数之一,可以帮助你完成分时操作和控制高速事件。由于其使用不会影响其他操作,因此在不使用延迟的情况下进行操作是非常实用的,特别是在需要同时执行多个任务或长期连续记录的情况下。 具体用法如下: 1. 在 void setup() 函数中调用 millis() 函数,将其值存储在一个变量中,以获得从开机到当前时间的毫秒数。 2. 然后在 void loop() 函数中调用 millis() 函数,并将其值与存储的时间戳进行比较,以检查延迟是否已到达预期的时间。如果已经到期,则执行特定的操作,并将延迟重置。 3. 还可以使用 millis() 函数构建更复杂的定时器,例如用于控制周期性任务或超时操作的定时器。 需要注意的是,如果您尝试在 millis() 函数返回值上执行算术运算,则需要避免值溢出,最大值为 unsigned long 类型的最大值 4294967295,在到达此值后,它将重新归零并重新计算。因此,在进行比较或计算时,请遵循此限制,避免错误的结果。 总之,millis() 函数是 Arduino 控制器上非常重要的内置函数,用于生成时间延迟、控制高速事件和分时操作,其使用简单而且非常实用。 ### 回答3: Arduino millis()是一个常用的函数,在Arduino开发中起到了非常重要的作用。它所返回的数值是Arduino开发板启动以来的毫秒数。可以用这个函数来进行定时器操作,精确定时,以及对程序的时间控制。 对于像Arduino这样的开发板而言,CPU的工作是基于一个clk信号的,Arduino Uno的主频是16Mhz,而Arduino Due的主频是84Mhz。millis()函数的实现是基于这个clk信号来的。每次这个clk信号的周期过去,计数器会加1,然后它和一个比较值进行比较,如果满足比较值的条件,就调用一个处理函数并重新开始计数。 由于Arduino的主频相对较低,如果要进行精确的时间测量,就需要使用更高级的定时器,如Timer1和Timer2。但是在大多数情况下,millis()函数已经足够,它的精度是相当高的。 在使用millis()函数时,我们可以通过调用它的返回值与预设值相比较,来判断此时是否到达了某一个时间点。可以这样来实现定时器的功能,比如经常使用的LED亮灭。如果想控制LED亮三秒,则可以使用这个函数来进行定时,当计数器达到3秒时,就让LED熄灭即可。 总之,millis()函数可以帮助我们精确的控制程序的运行时间和执行间隔时间,便于进行一些基础的控制,有很高的实用价值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值