안녕하세요, 고고메이커 입니다.

 

*시작에 앞서, 한글시계의 원작자님은 이호민 님입니다.

*제가 공유하는 모든 파일과 자료들을 개인 블로그에 올리시거나 무단 복제&도용하지 않으시길 바랍니다.

 

글의 내용이 많아 총 5편으로 나누었습니다

1. 프로젝트 소개

2. 외부, 내부 설계

3. 하드웨어 구현

4. 소프트웨어 구현

5. 향후 개선점(Ver.2, Ver.3)

 

한글시계 코드, Visual Studio로 2달정도 작업하였다.

-서론

이번 글에서는 한글시계 소프트웨어 구현에 대해 이야기해 보려 합니다.

두 달 걸릴 일이 아니었음에도, 온전히 한글시계에만 집중하고 살 순 없었기에, 하루하루 조금씩 조금씩 코딩하다 보니 이렇게 시간이 오래 걸렸네요...

저번 글에서 핵심적인 하드웨어를 조립하였다면, 그 하드웨어를 제어하는 소프트웨어에 대해 알아봅시다.

*코드는 개인의 상황에 따라 정상적으로 작동되지 않을 수도 있습니다.

저는 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. 사용자 지정 함수

 

그런데, 코드는 설명할 게 너무 많기도 하고, 자료를 올려놓으면 직접 분석을 해 보는 것이 훨씬 빠를 것 같아 코드만 올려놓습니다.

혹시라도 코드에 대해 추가로 알고 싶은 점이 있으시다면 댓글로 문의 바랍니다.

 

-결론

어찌 된 건지 더 싱겁게 끝나버렸네요...

이상 고고메이커였습니다!

다음 글에서 만나요~

 

@코드@

두 파일은 연결된 파일들입니다.

han_clock.ino
0.00MB
main_functions.ino
0.01MB

+ Recent posts