micros()
설명
아두이노 보드가 현재 프로그램을 돌리기 시작한 후의 마이크로 초 수를 반환한다. 이 수는 약 70분 후 오버플로우(0으로 돌아감)된다. 16MHz 아두이노 보드(e.g. Duemilanove 및 Nano)에서, 이 함수는 4 마이크로 초 분해능(즉 반환값은 언제나 4의 배수)을 갖는다. 8MHz 아두이노 보드(e.g. LilyPad)에서, 이 함수는 8 마이크로 초 분해능을 갖는다.
문법
time_us = micros()
매개변수
- 없음
반환값
- 아두이노 보드가 현재 프로그램을 돌리기 시작한 후 지난 마이크로 초 수를 반환. (unsigned long)
예제 코드
예제 코드 1
아두이노 보드가 시작한 후의 마이크로 초 수를 반환한다.
시리얼 모니터에 결과:
예제 코드 2
Print a text one time per second without blocking other codes
※ 주의 및 경고:
- 1 밀리초는 1천 초, 1초는 1백만 초.
- Please note that the return value for micros() is of type unsigned long, logic errors may occur if a programmer tries to do arithmetic with smaller data types such as int. Even signed long may encounter errors as its maximum value is half that of its unsigned counterpart.
- The return value of micros() function rolls over back to zero after roughly 71 minutes. If the sketch is intended to run for longer than that, It needs to make sure the rollover does not make the sketch fail. To solve it, write rollover-safe code. Let's compare the two following inequations:
- micros() >= (previousMicros + TIME_INTERVAL)
- (micros() - previousMicros) >= TIME_INTERVAL.
- Mathematically, they are equivalent to each other. However, in programming, they are not. That is because the size of storage is unlimited in mathematics while it is limited to 4 bytes in Arduino programming. In programming, when the rollover happens, the first inequation makes the sketch fail while the second inequation does NOT. Therefore:
- Do NOT use if (micros() >= (previousMicros + TIME_INTERVAL)),
- Use if(micros() - previousMicros >= TIME_INTERVAL) instead
더보기
- 언어 : delay()
- 언어 : delayMicroseconds()
- 언어 : millis()
※ ARDUINO BUY RECOMMENDATION
Arduino UNO R3 | |
Arduino Starter Kit |