나의 최초 아두이노 프로젝트인 LCD 시계를 구동하는 소스 코드는 아직 개선할 점이 많다. Makuna의 Rtc 라이브러리를 가져다가 설치하고 예제 프로그램을 얼기설기 고친 것에 지나지 않는다. 12/24시간 표시를 전환하는 스위치는 누르는 즉시 반응하는 것이 아니라 시간이 업데이트되는 1초 단위로만 작동한다. 아마 버튼 스위치를 누를 때 인터럽트가 작동하도록 개선해야 될 것이다. 아두이노 우노에서는 2번과 3번 핀이 인터럽트를 담당한다고 하니 DS1302 모듈에 연결되었던 핀을 모두 옮겨야 한다.
버튼 스위치를 더 달아서 시간 수정을 가능하게 만들고, 매시 정각에 소리를 낸다거나 설정된 시각에 알람을 울리는 것도 되지 않을까? 알람 설정을 기억하려면 DS1302 RTC 모듈로는 부족할지도 모른다. 아직 이에 대해서는 자세히 알아보지 않았다. 여기에다 FM 수신 모듈까지 달아서 완전한 시계 라디오로 확장할 수도 있지 않을까? 아두이노 우노 하나가 제공하는 14개의 디지털 입출력핀이 이를 전부 감당할 수 있을런지...
아두이노에서 돌아가는 프로그램은 표준 입출력도 없고, 파일에 무엇을 기록하거나 읽는 일도 거의 일어나지 않는다. 표준 C++가 갖춘 기능 중에서 아주 작은 부분집합을 이용하는 것에 불과할 것이다. 아두이노를 유일한 활용 방안으로 생각하지 말고, 기왕 이렇게 관심을 갖게 되었으니 C/C++에 대해서 본격적인 공부를 해 보는 것도 좋을 것이다. 인터넷 강좌 중에서는 모두의 코드가 잘 알려져 있는 것 같은데, 여기에 소개된 C++ 강좌는 C를 기본적으로 알고 있는 사람을 대상으로 한다.C++이 프로그래밍을 처음 배우는 사람에게 적합한가? 이런 질문에 대하여 "C++ is the best programming language"라는 대답을 쉽게 찾아 볼 수 있다. 그러나 내가 종사하는 생명공학 분야의 informatics를 위해서라면, 파이썬이 더 좋은 대안일 수 있다. 예를 들어 Quora에 올라온 질문과 답을 보면 많은 것을 생각하게 한다(Is C++ a good first programming language?).
단지 아두이노만을 위해서 C++을 익힌다면 어떤 경로를 택하는 것이 옳은가? 초보자가 객체지향 프로그래밍(OOP)의 개념을 처음부터 건드리다간 혼란만 겪을 가능성이 크다. 몇 가지 정해진 함수만 잘 쓰는 것으로 충분할 수도 있다. 아두이노 공식 웹사이트 포럼의 Learning C++ programming이라는 글도 한번은 읽어 보아야 한다. Question: Should I learn C++ for Arduio?의 질문과 함축적인 답변도 도움이 될 것이다. 몇 가지를 더 찾아 보았다. 그렇다! 너는 OOP에 약간의 관심이 있다. 물론 아두이노가 이를 학습할 최적의 동기를 제공한다거나, 이렇게 짜여진 프로그램을 실행할 최고의 환경은 아닐 수도 있다.
- Arduino the Object Oriented way
- Circuit Basics - Arduino 제13장에 클래스와 객체에 관한 설명이 있다.
댓글 없음:
댓글 쓰기