Arduino millis() 함수

Ammar Ali 2023년10월12일
  1. millis()함수를 사용하여 Arduino에서 경과 한 시간 확인
  2. millis()함수를 사용하여 Arduino에서 LED 깜박임
  3. millis()함수를 사용하여 Arduino에서 LED 밝기 변경
Arduino millis() 함수

이 튜토리얼은 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 밀리 초마다 증가합니다. 위 코드에서 변수 기간을 변경하여 증분 시간을 변경할 수 있습니다.

작가: 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