Arduino millis() 함수

  1. millis()함수를 사용하여 Arduino에서 경과 한 시간 확인
  2. millis()함수를 사용하여 Arduino에서 LED 깜박임
  3. millis()함수를 사용하여 Arduino에서 LED 밝기 변경

이 튜토리얼은 Arduino의 여러 애플리케이션에서millis()함수를 사용하는 방법에 대해 설명합니다. 이 자습서에서는millis()함수를 더 잘 이해하기위한 몇 가지 예를 설명합니다.

millis()함수를 사용하여 Arduino에서 경과 한 시간 확인

millis()함수는 Arduino 보드가 코드 실행을 시작한 이후 경과 된 밀리 초 수를 포함하는unsigned long유형의 부호없는 변수를 반환합니다. 반환 된 변수는unsigned long유형이므로 49 일 후에 숫자가 오버플로되고 0으로 재설정됩니다.

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()함수에 대한 자세한 정보를 보려면이 링크를 확인하십시오.

millis()함수를 사용하여 Arduino에서 LED 깜박임

이 예에서는millis()함수를 사용하여 LED를 깜박입니다. 1 초와 같은 특정 기간 동안 LED를 깜박 여야한다고 생각해보십시오. 이 경우millis()함수를 사용하여 특정 시간 동안 LED를 깜박일 수 있습니다. delay() 함수를 사용하여 LED를 깜박이면 지연 시간이 끝날 때까지 코드가 일시 중지됩니다. 따라서delay()함수를 사용하는 대신millis()함수를 사용할 수 있으며 코드가 일시 중지되지 않습니다.

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는 정확히 1 초 동안 켜지고 꺼집니다. 위 코드에서 가변주기의 값을 변경하여 깜박임주기를 변경할 수 있습니다.

millis()함수를 사용하여 Arduino에서 LED 밝기 변경

이 예에서는millis()함수를 사용하여 LED의 밝기를 변경합니다. LED의 밝기가 증가하는 기간을 설정합니다. 이를 위해 Arduino의 PWM 핀에 LED를 연결해야합니다. 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 밀리 초마다 증가합니다. 위 코드에서 변수 기간을 변경하여 증분 시간을 변경할 수 있습니다.

관련 문장 - Arduino Time