코인 Ticker 만들기 #14.Timer
- 윈드마켓
- 2019년 1월 24일
- 2분 분량
이번 강좌에서는 타이머에 대해서 알아보도록 하겠습니다.
우선 타이머의 개념부터 알아보도록 하겠습니다.
타이머는 설정된 특정 시간에 이벤트를 발생하는 것으로
타이머를 1000ms 로 설정한 경우 1000ms(1초) 주기로 이벤트를 발생하여
특정 작업을 할 수 있도록 해주는 역할을 합니다.
예를 들어 1초마다 LED 를 깜박이게 하는 기능이 필요할때 사용하게 되는데요.
delay(1000); 이라고 해도 되는데 왜 타이머를 사용해야 하는지 의아해 하실텐데요
delay 함수는 1초 동안 대기하고 있으면서 delay 함수 밑의 작업을 하지 않게 되지만
타이머는 다른 작업이 진행되는 동안 시간을 체크하다가(정확히 말하면 클럭을 체크)
설정된 시간이 되면 이벤트를 발생하여 다른 동작을 할 수 있게합니다.
이렇게 해서 멀티테스킹 작업을 할 수 있게 되는것이지요.
예를 들면 TV를 보고 있다가 5분에 설정해놓은 요리 타이머 벨이 울리면 라면이 다 익었나 보러가는 것처럼요.
이런 타이머를 간단하게 구현할 수 있도록 라이브러리로 제공되어지고 있는데요.
아래 방법을 따라해보면서 타이머에 대해서 구현해 보도록 하겠습니다.
1. 아래 경로로 들어가서 타이머 예제를 간단히 확인해 봅니다.
https://playground.arduino.cc/Code/Timer
2. 아래 경로로 들어가서 [clone or download] 버튼을 클릭하여 타이머 라이브러리를 다운로드 받습니다.
https://github.com/JChristensen/Timer
3. 다른 라이브러리와 마찬가지로 아두이노 IDE 설치 경로 밑의 libraries 밑에 압축을 해제해 줍니다.
예) C:\Program Files (x86)\Arduino\libraries
또는 C:\Program Files\Arduino\libraries
4. 1번 경로에 있는 예제 프로그램을 하나 구현해 보도록 하겠습니다.
- Wemos D1 mini 에 맞게 LED pin 설정을 내부 LED로 변경만 해주고
아직 아날로그 입력이 없으므로 그냥 timer event 만 시리얼 모니터로 출력해주도록 변경해 줍니다.
#include "Timer.h"
Timer t;
int pin = LED_BUILTIN; // 내부 LED
void setup()
{
Serial.begin(9600);
pinMode(pin, OUTPUT); // 내부 LED 를 출력으로 설정합니다.
t.oscillate(pin, 100, LOW); // 0.1초마다 내부 LED 에 LOW 값을 보내서 LED 가 켜지도록 합니다.
t.every(1000, takeReading); // 1초마다 takeReading 메서드를 호출합니다.
}
void loop()
{
t.update(); // 타이머 update 를 반복(loop) 합니다.
}
void takeReading()
{
Serial.println("timer event"); // 시리얼 모니터로 문자열을 출력합니다.
}
5. 아두이노 IDE에서 컴파일 하고 업로드 해봅니다.
내부 LED 가 0.1초 간격으로 깜빡이면서
시리얼 모니터를 통해 1초마다 timer event 라는 문자열이 출력되면 정상입니다.
이때 시리얼 모니터 하단의 옵션을 9600 으로 바꿔주어야 정상 출력되는것을 확인하실 수 있습니다.
아내면 소스내의 Serial.begin(9600); 이부분을 시리얼 모니터 하단 옵션과 일치시켜주고
다시 업로드 해줍니다.

이상으로 타이머에 대해서 알아보았습니다.
감사합니다.
Comments