마이크로비트로 블록 코딩하기 15
상태바
마이크로비트로 블록 코딩하기 15
  • IC뱅큐
  • 승인 2019.10.30 09:00
  • 댓글 0
이 기사를 공유합니다

마이크로비트 시계 제작

오늘은 마이크로비트의 LED 디스플레이를 통해 시간을 표시하는 디지털 시계를 만들 것이다. 우선 이 디지털 시계는 RTC(Real Time Clock) 모듈을 포함하지 않기 때문에 기기가 꺼질 경우 내가 설정한 시간이 유지되진 않지만, 첫 시간을 설정하고 계속해서 전원을 연결해준다면 어느 정도 시간을 확인할 순 있다. 이번 프로그래밍에서는 현재 시각을 설정하고, 그다음부터는 마이크로비트 자체에서 알아서 시간을 잴 수 있도록 움직이는 프로그램을 짜볼 것이다.

변수 설정하기

먼저 시계를 만들기 위해서는 5가지의 변수를 만들어야 한다.

[표1] 마이크로비트 시계 구성을 위한 5가지 변수
[표1] 마이크로비트 시계 구성을 위한 5가지 변수

[표1] 변수에 대한 내용이 이해됐다면 [그림1]과 같이 블록 코딩을 시작하자. 우선 AM/PM에는 거짓을 저장, time에는 문자열 공백을 저장, adjust, hours, minutes에는 0을 저장해 초기 값을 설정해준다.

[그림1]
[그림1]

버튼을 눌러 시, 분, 초 설정하기

마이크로비트는 RTC(Real Time Clock) 모듈이 없기 때문에 처음 전원을 켜는 시점에 현재 시간을 입력해줘야 한다. [그림2]는 현재 시간을 입력하는 코딩이다. A버튼을 누를 경우 시간(hours), B버튼을 누를 경우 분(minutes)을 표시, A와 B버튼을 동시에 누를 경우에는 24시간, 12시간 표기를 변경하도록 코딩할 것이다. 이 코딩은 A버튼을 누를 경우 시간(hours) 변수가 1씩 증가하고 24이상이 되면 다시 0으로 돌아가는 코딩이다.

[그림2]
[그림2]

다음으로 [그림3]은 B버튼을 누를 경우 분(minutes) 변수가 1씩 증가하고 60 이상이 되면 다시 0으로 돌아가는 코딩이다.

[그림3]
[그림3]

A버튼과 B버튼 동시에 누를 경우 AM/PM 표기 여부를 정할 수 있다[그림4].

[그림4]
[그림4]

이어서 마이크로비트를 흔들면 현재 시간을 표시하도록 코딩해보자. 먼저 기존에 표시돼 있던 LED 스크린을 지워준다. [그림5] 논리 블록들은 AM/PM이 True 상태일 경우 동작하며 이 경우 AM/PM을 구분해 시간을 표시하도록 규칙을 정한 함수다.

hours 변수가 12보다 크면 다시 0으로 만들고, hour 변수가 0이면 다시 12로 만들어주거나, hour 변수가 12 이상이면 PM, 그렇지 않으면 AM으로 숫자가 표기된다. 그리고 time 변수에는 [AM/PM] [시간] [분][분]을 표기하는 연속된 문자열을 저장한다. 이후 time 변수를 LED스크린에 출력하면 현재 시간이 표시된다.

[그림5]
[그림5]

시간 규칙 함수 만들기

시간은 60초=1분, 60분=1시간 이란 규칙을 갖고 있다. 이 점을 이용해 60초가 지나면 minutes 변수를 1, 60분이 지나면 hours 변수를 1씩 늘려주는 함수를 만들어 주자. 60000(ms) 즉 60초 동안 중지하다가 60초가 지날 경우 minutes가 59 이하면 minute의 값이 1증가, 60 이상이면 minutes 값을 0으로 만들고 hours를 1 올려준다. 이때 Hours가 23 이하일 경우에는 1씩 증가하고 hours가 24 이상일 경우에는 hours를 0으로 만들어 주면 된다[그림6].

[그림6]
[그림6]

마치며

마이크로비트로 시계를 완성했다면, 마이크로비트 전용 시계줄, 배터리도 따로 판매하기 때문에 나만의 DIY 마이크로비트 손목시계를 만드는 것도 가능하다. 완성된 모습은 아래 영상에서 확인할 수 있다.

글 | 전자 엔지니어 전문몰 IC뱅큐
홈페이지 | https://www.icbanq.com
블로그 | cafe.naver.com/icbanq

 

- 이 글은 테크월드가 발행하는 월간 <EMBEDDED> 2019년 10월호에 게재된 기사입니다.