"첫 번째 아두이노 라이브러리-set_timer_to_actuator"
- 성식 공
- 2021년 1월 14일
- 2분 분량

나의 궁극적인 목표는 기술을 통하여 세상에 긍정적인 영향을 주는 제품들을 만드는 것이다. 그러기 위하여 나는 생활가전, 가전제품과 같이 우리의 일상과 가장 밀접하게 맞닿아 있는 제품들을 만들어 보는 것이 1차적인 꿈이다. 특히 근래에 들어 IoT 기술이 발달하면서 단순한 운동 기능을 가진 제품을 넘어 인공지능을 통한 고차원적인 서비스를 생산하는 제품이나, 딥러닝 기술 등을 통해 기하급수적 성능 향상을 동반한 제품들이 산업의 방향을 이끌고 있다. 이를 조금이라도 이해하기 위해 임베디드 제품들의 가장 기본이 되는 오픈소스 하드웨어 기기인 아두이노를 다루는 법을 시간이 날 때마다 조금씩 익히고 있다.
오늘은 타이머를 설정하면 알람이 울리는 기능을 간단한 코드와 최고화된 회로를 통해 구현해 보려고 하였는데, 원래 아두이노cc에 나와있는 SimpleTimer 오픈소스 라이브러리를 참고하여 쓰려고 하였던 것이, 여러 웹사이트에 올라와있는 예시로는 힘들길래 직접 헤더파일과 cpp파일을 확인해보았다.
https://www.arduino.cc/reference/en/libraries/simpletimer/

원래 계획은 타이머에 시간을 설정하고, 시간이 종료된 이후에 따로 작성한 함수를 통해 다른 액추어이터를 작동시키는 방식으로 만들어보려고 하였는데, 위와 같은 구조로는 여러 함수들을 타이머 설정과 동시에 실행시키기가 어려웠다. (물론 그냥 delay() 후에 그냥 함수를 쓰는 방식으로 짜도 되지만 코드가 이후 더 복잡해 질 경우 그 방식은 일반적이진 않은 것 같다- '것 같다'고 하는 이유는 아직 내 아두이노 지식이 짧아서 그렇다.. )
그래서 다음과 같이 라이브러리 코드를 바꾸어보았다. 파라미터로 int interval 변수와 void 함수를 받고 delay와 액추에이터 가동함수일 예정인 do_this()를 실행하는 함수이다.

아울러 헤더코드도 다시 짜보았다.

평소 사용한 파이썬이나 C문법이 아닌 C++ 문법이길래 수정한 코드에 오류가 있을까봐 걱정했는데 다행히 무리없이 돌아가서 기뻤다. 사실 복붙수준의 보잘것없는 코드이지만 그래도 첫 번째 나만의 커스터마이징이된 라이브러리가 생긴 셈이다. 게다가, 솔직히 기존 arduino.cc의 SimpleTimer 라이브러리는 내가 잘 못다룬것인지는 모르겠지만 (최소 헤더파일 설명을 보았을 때) Timer라고 할 만한 기능이 별반 구현되어 있지 못한 것 같았다. 그러니까 조금이나마 나은 라이브러리를 만든 셈이다(?) (사실 헤더파일과 같이 기본이 되는 코드를 조금이라도 손대본게 처음이라 살짝 긴장되면서도 뭔가 기뻤다ㅎ 코알못...)
위 라이브러리는 아래 깃허브 주소로 들어가면 헤더파일과 cpp파일을 모두 다운로드하면 사용할 수 있다.

(보여주기엔 너무 간단해서 민망할 정도인 수준의 회로)
혹시나 내가 이해를 잘 못한 것일수도 있으니 SimpleTimer 라이브러리를 이용하는 더 좋은 방법이 있다면 알고싶다. 꾸준히 계속 아두이노를 공부해서 좀 더 멋진 코드와 회로로 좋은 기능을 만들어보고 싶다.
Commentaires