Arduino mills() 函数

Ammar Ali 2023年1月30日 2021年4月29日
  1. 在 Arduino 中使用 millis() 函数检查经过的时间
  2. 在 Arduino 中使用 millis() 函数闪烁 LED
  3. 使用 millis() 函数更改 Arduino 中 LED 的亮度
Arduino mills() 函数

本教程将讨论 millis() 函数在 Arduino 中不同应用程序中的使用。本教程还将讨论一些例子来更好地理解 millis() 函数。

在 Arduino 中使用 millis() 函数检查经过的时间

millis() 函数返回类型为 unsigned long 的无符号变量,该变量包含自 Arduino 开发板开始运行代码以来经过的毫秒数。由于返回的变量的类型为 unsigned long,该数字将在 49 天后溢出并重置为零。

unsigned long currentTime;

void setup() {
    Serial.begin(19200);
}

void loop() {
    Serial.print("Time Stamp: ");
    currentTime = millis();
    Serial.println(currentTime);
    delay(1000);
}

在上面的代码中,currentTime 是类型为 unsigned long 的变量,用于存储时间。查看此链接以获取有关 millis() 函数的更多信息。

在 Arduino 中使用 millis() 函数闪烁 LED

在此示例中,我们将使用 millis() 函数闪烁一个 LED。考虑到你必须使 LED 闪烁特定的时间,例如 1 秒钟。在这种情况下,你可以使用 millis() 函数使 LED 闪烁特定时间。如果你使用 delay() 函数使 LED 闪烁,它还将暂停你的代码,直到延迟时间结束。因此,可以使用 millis() 函数来代替使用 delay() 函数,并且该函数不会暂停你的代码。

unsigned long startTime;  
unsigned long currentTime;
const unsigned long period = 1000;
const byte ledPin = 13;

void setup()
{
    pinMode(ledPin, OUTPUT);
    startTime = millis();  //initial start time
}

void loop()
{
    currentTime = millis();
    if (currentTime - startTime >= period)//test whether the period has elapsed
    {
        digitalWrite(ledPin, !digitalRead(ledPin));//if so, change the state of the LED.
        startTime = currentTime;
    }
}

在此示例中,LED 将精确地打开和关闭一秒钟。你可以通过更改上面代码中可变周期的值来更改闪烁周期。

使用 millis() 函数更改 Arduino 中 LED 的亮度

在此示例中,我们将使用 millis() 函数更改 LED 的亮度。我们将设置一个期间,在此期间 LED 的亮度将增加。为此,我们需要将 LED 与 Arduino 的 PWM 引脚连接。我们可以使用 analogWrite() 函数将亮度写入 LED。我们可以使用 analogWrite 功能在 0 到 255 之间改变 LED 的亮度。

unsigned long startTime;
unsigned long currentTime;
const unsigned long period = 10;
const byte ledPin = 10;    //using an LED on a PWM pin.
byte ledBrightness = 0;       //initial brightness
byte LedIncrement = 1;        //amount to change the brightness

void setup()
{
    pinMode(ledPin, OUTPUT);
    startTime = millis();  //initial start time
}

void loop()
{
    currentTime = millis();
    if (currentTime - startTime >= period)
    {
        analogWrite(ledPin, LedBrightness);    //set the brightness
        LedBrightness += LedIncrement;
        startTime = currentTime;
    }
}

在此示例中,LED 亮度将每 10 毫秒增加一次。你可以通过更改以上代码中的可变周期来更改增量时间。

Author: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

相关文章 - Arduino Function