📜  Arduino-时间(1)

📅  最后修改于: 2023-12-03 15:29:27.769000             🧑  作者: Mango

Arduino-时间介绍

Arduino是一款嵌入式开发板,可用于控制各种电子设备。掌握如何在Arduino中使用时间功能,对于许多项目都是必要的。在本文中,我们将介绍如何在Arduino中使用不同的时间功能。

常用的时间函数

Arduino中有几个常用的时间函数,以下是它们的介绍:

millis()

millis()函数返回自Arduino板初始化以来经过的毫秒数。该函数可用于精确测量时间间隔。

unsigned long currentMillis = millis();
unsigned long previousMillis = 0;
unsigned long interval = 1000;

void loop() {
  if (currentMillis - previousMillis >= interval) {
    // 执行任务
    previousMillis = currentMillis;
  }

  currentMillis = millis();
}
micros()

同样,micros()函数返回自Arduino板初始化以来经过的微秒数。它比millis()更加精确,但它的计时器是从零开始的,也更容易溢出。

delay()

delay()函数会暂停程序的执行一定的毫秒数。这很容易使用,但它会占用Arduino板的处理器,因为它会等待一定的时间。例如:

void loop() {
  digitalWrite(LED_PIN, HIGH);
  delay(1000);
  digitalWrite(LED_PIN, LOW);
  delay(1000);
}

该代码将在LED引脚上打开和关闭电流,每次等待1秒。

delayMicroseconds()

delayMicroseconds()函数与delay()函数类似,但是它将暂停一定数量的微秒。由于它只暂停很短的时间,因此会消耗更少的处理器时间。

time()

time()函数返回自1970年1月1日以来经过的秒数。该函数需要使用时间库或RTC模块。

使用实时时钟模块

实时时钟模块(RTC)是一种可用于Arduino的外部组件,可存储并保持时间。该模块将保持时间,即使Arduino板被断电或重启。

以下是使用RTC模块设置时间的示例:

#include <Wire.h>
#include "RTClib.h"

RTC_DS1307 rtc;
DateTime now;

void setup() {
  Wire.begin();
  rtc.begin();

  if (!rtc.isrunning()) {
    rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
  }

  now = rtc.now();
}

void loop() {
  now = rtc.now();
}
总结

了解和掌握Arduino的时间函数是非常有用的,可以帮助您精确测量时间间隔和控制设备的信号。实时时钟模块可使您的Arduino板在掉电或重启后也能够保持时间。