아두이노 코딩-206: 아두이노 타이머 코딩

in #kr6 years ago (edited)

초보자 수준에서 해봐야 할 기본적인 코드를 꽤 작성해 보았다. 하지만 난이도 때문인지 언뜻 손이 가지 않는 분야가 있는데 바로 타이머(Timer) 이다.
이미 delay() 명령을 수없이 사용하고 있으나 그것이 마이크로 컨트롤러의 기본에 해당하는 타이머의 영역이란 점을 처음부터 알았던 것은 아니고 millis() 명령을 다루게 됨에 따라 조금 알게 되었으며 한편 DIY 아두이노 드론을 하면서 마이크로 컨트롤러의 우리가 알지 못했던 영역들이 있음을 알게 되었다. 즉 인터럽트와 타이머 영역이라 보면 될 것이다. DIY 드론이야 직접 제작하게 되면 코딩에 신경을 쓸 수밖에 없으므로 자연히 조금 경험이 쌓이게 된다. 그럼에도 불구하고 그다지 경험 축적이 잘 안되는 분야가 아두이노 타이머이다. 타이머에 관해서는 2018년 하반기에 LORIN ESP32 보드 평가 작업을 하는 과정에서 AnalogWrite() 등가 명령을 사용하면서 다루어 본 것이 전부이다.

일단 Timer.h 라이브러리를 찾아 설치한 후 별도의 배선 없이 붙박이 LED를 사용하여 타이머 효과를 확인해 볼 수 있는 예제 코드를 실행해 보기로 한다.

noname01.png

위 그림에서 처럼 Timer.h 라이브러리가 압축되어 있는 zip 파일을 다운 받아 폴더 위치를 정한 후 압축을 해제하자. 필자의 경우 아두이노 연습 코드들이 들어 있는 폴더 공간에 라이브러리를 설치하곤 한다. 아울러 스케치의 라이브러리 포함하기에서 zip 라이브러리 추가하기 과정에서 상기의 라이브러리 폴더 공간을 지정해 주도록 하자.

noname02.png

다음의 예제 코드 즉 붙박이 LED 13번을 10초간 ON 시켰다가 끄는 간단한 코드를 실행해 보자.

noname03.png

업로딩 후 분명히 10초 ON 되었다가 10초 후 다시 켜진다. 아울러 Timer.h 에는 상당히 많은 명령어들이 있는데 앞으로 그 사용법을 알아보기로 하자.

//timer_excersize_02
#include "Timer.h"
Timer t;
int pin = 13;
void setup() {
pinMode(pin, OUTPUT);
t.pulse(pin, 10 * 1000, HIGH); // 10초 ON
}
void loop() {
t.update();
}

Sort:  

안녕하세요 codingart님

좋은 하루 보내세요!!

Turtle-lv1.gif

아, 이렇게 하는거군요. ^^ 이걸 몰라서 대회할 때, 현재시간에다가 1초마다 더하기 1하고, 분되면 더하기 1하고 시되면 더하기 1하고 그런 식으로 덮어썼어요. ㅋㅋㅋㅋㅋㅋㅋ 지금 생각하면 아무것도 없이, 참 무식하게 했네요. ㅎㅎㅎㅎ

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63501.83
ETH 2650.23
USDT 1.00
SBD 2.81