Loading
2015. 5. 12. 09:33 - Dexter Oh

아두이노 타이머 라이브러리 by Simon Monk

최근 아두이노를 이용한 MP3 모듈 제어 작업을 하며 알게 된 라이브러리 이다. 

생각보다 간단하고 편리하게 사용이 가능하여 소개 합니다.


→ 아두이노 타이머 라이브러리 by Simon Monk 다운로드 하기


해당 라이브러리는 GNU LGPL이며 SimpleTimer 라이브러리와 비슷하다.




→ 라이브러리 정보 보러가기


해당 링크로 이동하면 라이브러리의 정보와 여러가지 샘플 코드를 볼 수 있으나, 여기서도 샘플코드를 소개해 보겠다.


#include <Timer.h> #define DEFAULT_VOLUME  15 #define MAXIMUM_VOLUME  30 #define TEN_MINUTES     600000 Timer tm; int volumeTimerID; int currentVolume; void set_volume_max(void) {     currentVolume = MAXIMUM_VOLUME; } void set_volume_default(void) {     currentVolume = DEFAULT_VOLUME;     volumeTimerID = -1; } void setup() {

 pinMode(2, INPUT); } void loop() {     set_volume_default();     do {         if (digitalRead(2) == HIGH) {             set_volume_max();                          if (volumeTimerID != -1) {                  tm.stop(volumeTimerID);                  volumeTimerID = -1;             }                              if (volumeTimerID == -1) { volumeTimerID = tm.after(TEN_MINUTES, set_volume_default);             }         }         tm.update();     } while(1); }

기능 :

기본 볼륨은 15(DEFAULT_VOLUME)로 셋팅 하고 2번핀에 연결된 버튼이 눌리면 볼륨을 30(MAX_VOLUME)으로 셋팅 한다.

단 버튼이 눌린 후에 10분간 다시 버튼이 눌리지 않는다면 볼륨을 15로 내린다.


tm.after(...)를 통하여 시간을 설정하고 해당 시간이 되면 실행될 함수를 지정해 두면 해당 함수가 실행 된다.


한가지 유의할 점tm.update()는 무조건 loop()에서 호출해야 한다는 점이고 만약 이 함수를 호출 하지 않을경우 라이브러리가 동작 하지 않을것이다.



아두이노의 강점은 라이브러리 라는 점을 다시 한번 느낀다.