안녕하세요, 고고메이커 입니다.
*시작에 앞서, 한글시계의 원작자님은 이호민 님입니다.
*제가 공유하는 모든 파일과 자료들을 개인 블로그에 올리시거나 무단 복제&도용하지 않으시길 바랍니다.
글의 내용이 많아 총 5편으로 나누었습니다
-서론
이번 글에서는 한글시계 소프트웨어 구현에 대해 이야기해 보려 합니다.
두 달 걸릴 일이 아니었음에도, 온전히 한글시계에만 집중하고 살 순 없었기에, 하루하루 조금씩 조금씩 코딩하다 보니 이렇게 시간이 오래 걸렸네요...
저번 글에서 핵심적인 하드웨어를 조립하였다면, 그 하드웨어를 제어하는 소프트웨어에 대해 알아봅시다.
*코드는 개인의 상황에 따라 정상적으로 작동되지 않을 수도 있습니다.
저는 visual studio community 2019에서 코딩하였고, 윈도 10 home 64bit, Arduino ver.1.8.13입니다.
아두이노 ide에서 업로딩 하였을 때, 정상작동하는 것은 확인하였습니다.
-본론
65535. 제작자는 코딩을 어떻게 하였는가
저는 차근차근 하나하나 코딩해 나갔습니다.
1. 우선, 다 조립이 되고 난 후, 네오픽셀이 잘 작동되는지 보기 위해, 네오픽셀 테스트 코드를 사용해 보면서 문제없는지 테스트해 보고,
2. 네오픽셀에 시간을 표시할 수 있는 코드들을 먼저 작성한 후
3. 그 당시 DS1302를 가지고 있었어서 그걸 이용해 코딩을 진행, 성공했다.
- 그러나, 이렇게 짠 코드에는 치명적 오류가 있었기에 오류를 고침과 동시에 시계에 몇 가지 기능을 추가하게 된다.
4. 우선 표시되는 오류를 1차적으로 해결하고
5. 버튼을 추가한 후, 버튼 2개를 가지고 하나는 LED, 하나는 시간을 제어할 수 있도록 코딩했다.
- 그러나 버튼 1개에서 2가지 동작을 하도록 구현해야 했고, 이것은 굉장히 힘들었다.
- 구글링을 해보고 별짓을 다 해봐도 해결이 안 되었다...
- 엎친데 덮친 격으로 RTC모듈마저 오차값이 너무 커 실사용이 불가능할 정도가 되어 내부 millis함수를 사용하여 시계를 만들기로 하였다.
6. 내부 millis함수로 시계를 사용할 수 있게 하였고
7. 버튼 문제에 거의 한 달을 쏟은 결과 성공할 수 있었다.
8. 시간을 millis로 재는 것이 아닌, DS3231 모듈을 이용하기 위하여 또다시 코드를 변경하고
9. 이로 인해 발생한, 그리고 최종 테스트하며 발생한 문제들을 모두 잡아내는 데 성공한다.
특히, 가장 뿌듯했던 순간은 버튼이 제대로 동작할 때였는데, 묵은 체증이 싹 가시는 것 같았다.
0. 전반적으로
아두이노 코드 파일이 2개로 나뉘어 있는 것을 볼 수 있습니다. 위에서 보는 것과 같이, 코드를 메인 파트와 함수 파트로 나눠 두었는데, 이렇게 함으로써 코드를 전반적으로 동시에 보기 쉽고 관리하기 좋게 만들었습니다.
코드는 3 부분으로 나눠 설명할 수 있을 것 같습니다.
1. 해더 파일, 변수 선언
2. void setup(), void loop()
3. 사용자 지정 함수
그런데, 코드는 설명할 게 너무 많기도 하고, 자료를 올려놓으면 직접 분석을 해 보는 것이 훨씬 빠를 것 같아 코드만 올려놓습니다.
혹시라도 코드에 대해 추가로 알고 싶은 점이 있으시다면 댓글로 문의 바랍니다.
-결론
어찌 된 건지 더 싱겁게 끝나버렸네요...
이상 고고메이커였습니다!
다음 글에서 만나요~
@코드@
두 파일은 연결된 파일들입니다.
'메이킹 프로젝트' 카테고리의 다른 글
한글시계v1 제작기 5. 향후 개선점(Ver.2, Ver.3) (0) | 2021.02.11 |
---|---|
한글시계v1 제작기 3. 하드웨어 구현 (0) | 2021.02.10 |
한글시계v1 제작기 2. 외부, 내부 설계 (0) | 2021.02.10 |
한글시계v1 제작기 1. 프로젝트 소개 (2) | 2021.02.08 |