일반적으로 처음 아두이노를 접할때 led를 켰다 끄는 법을 배우면서 자연스럽게 delay라는 명령어를 사용하게 된다.
이 delay는 프로그램을 지연시킨다는 뜻이며 결국 지연되는 시간동안 아무런 작업을 수행하지 못하고 멈춘 상태가 된다.
예를들어 delay(1000)이라는 명령을 내리면 1초동안 회로가 멈춤상태가 되며
실제로 우리가 컴퓨터나 스마트폰을 이용할 때 1초가 지연되면 엄청나게 답답함을 느낄 것이다.
이런 문제점을 해결하고자 도입된 개념이 millis()함수 이다.
millis란 millisecond의 약자로 1/1000초로 아주아주아주 매우매우매우 짧은 시간이다.
아주 짧은 시간 안에 빠르게 작업을 수행하여 마치 우리 눈에는 멀티테스킹을 하는 것 처럼 보인다.
이런 마이크로컨트롤러는 동시에 여러 작업을 하지 못하고 한 순간에 하나의 작업만 할 수 있이며
컴퓨터는 마치 동시에 여러 작업을 하는 것처럼 보이지만 사실 이는 매우 빠른 속도로 하나의 작업만 하고 있는 것이다.
다음은 millis함수를 이용한 기본적인 예제이다.
long time = millis() ;
void setup() {
pinMode(7, OUTPUT); //7번 핀에 led연결
}
void loop() {
if (time + 1000 < millis()) { //0~1초동안
digitalWrite(7, HIGH) ; //출력해라
}
if (time + 2000 < millis()) { //1~2초동안
time = millis() ; //time초기화
digitalWrite(7, LOW) ; //꺼라
}
}
millis함수는 매우 빠른시간으로 많은 변수가 생성되고 이를 표현하기 위해서 가능한 큰 자료형인
long 혹은 unsignede long형태의 자료형을 쓴다.
다음은 아두이노 홈페이지 millis()함수에관한 설명이다.
https://www.arduino.cc/reference/ko/language/functions/time/millis/
'아두이노 > 예제' 카테고리의 다른 글
[아두이노] 메가2560 lcd(I2C모듈) 출력하기 (1) | 2021.06.30 |
---|---|
[아두이노] 메가2560 블루투스 연결 (0) | 2021.06.23 |