본문 바로가기
과학/아두이노

아두이노 millis() 함수에 대해 알아보자

by 루민즈 2022. 12. 1.

안녕하세요 

아두이노 함수중 millis 함수를 정리하려고 작성하게 되었습니다. 

 

먼저 millis()함수와 비슷한 기능을 하는 delay() 함수에 대해 알아봐요 

delay() 함수는 밀리세컨드 기준으로 1000을 넣어주면 1초 동안 멈춥니다. 

하지만 이 1초동안 아무것도 할 수 없습니다. 

 

반면에 millis()함수를 쓰면 어느 한 부품을 멈추고 다른 부품을 쓰게 하는 것이 가능합니다. 

혹은 모두 멈추게 할수도 있고요 

 

millis() 함수는 아누이도 프로그램이 시작된 시점부터 밀리세컨드(ms) 단위로 증가된 값을 unsigned long 타입으로 반환한다고 나와있습니다. 

 

출처 : 아두이노 레퍼런스

void setup()에 millis()함수를 넣어주면 아두이노 프로그램이 시작된 시간이 입력되어집니다. 

그리고 void loop()에 millis함수를 넣어주면 loop()에서 계속~ 시간이 업데이트(증가) 됩니다.

 

 

 

 


unsigned int time_now;
unsigned int time_next;

void setup() {
  time_now = millis();
  pinMode(7,OUTPUT);
  pinMode(13,OUTPUT);
}

void loop() {
  time_next = millis();
   if(time_next - time_now >= 1000 && time_next - time_now <= 3000){
    digitalWrite(7,HIGH);
  }
  
   if(time_next - time_now >= 2000 && time_next - time_now <= 3000 ){
    digitalWrite(13,HIGH);
  }
  
  if(time_next - time_now > 3000){
    digitalWrite(7,LOW);
    digitalWrite(13,LOW);
    time_now = time_next;
  }
}

 

7번 핀의 LED 그리고 13번 핀의 LED를 꽂으면 7번 핀이 먼저 불이 켜지고 그다음 13번 핀이 불이 켜진다음 

7번 그리고 13번핀 모두 불이 꺼집니다. 이 과정을 반복합니다. 

 

 

728x90
반응형