Arduino millis() 함수
-
millis()
함수를 사용하여 Arduino에서 경과 한 시간 확인 -
millis()
함수를 사용하여 Arduino에서 LED 깜박임 -
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 밀리 초마다 증가합니다. 위 코드에서 변수 기간을 변경하여 증분 시간을 변경할 수 있습니다.