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

마이크로비트 ma:Queen RC카 만들기 ②

마이크로비트(Micro:bit)는 영국의 BBC에서 제작한 코딩교육용 교구다. 비슷한 제품으로는 아두이노가 대표적인데, 마이크로비트는 아두이노와 달리 크기가 더 작고 센서와 LED, 버튼을 내장해 보다 쉽게 사용할 수 있는 특징이 있다.

또한 마이크로비트 웹사이트에서 블록을 이용해 코딩하고 바로 컴파일 할 수도 있다. 온라인 코딩의 경우 한번 접속한 기록이 있다면 웹상에 저장해 오프라인 상태에서도 블록 코딩이 가능하고, 블록 코딩 이외에도 자바스크립트로 변환한 뒤 직접 코딩할 수도 있다. 이 밖에도 안드로이드, IOS 환경에서의 애플리케이션도 정식 지원하며 모바일 코딩과 블루투스를 이용한 업로드를 지원한다.

[그림1] 마이크로비트 구성도
[그림1] 마이크로비트 구성도
[그림2] 자바스크립트 코딩 인터페이스
[그림2] 자바스크립트 코딩 인터페이스

초음파 센서를 이용해 장애물 회피하기

마퀸(Ma:Queen)은 마이크로비트를 장착해 RC카 동작을 코딩해볼 수 있는 제품이다. 초음파 센서와 LED가 기본 제공돼 장애물을 감지하며, 방향 지시등을 켜는 동작도 가능하다. 또한 2개의 외부 포트에 서로 다른 센서류를 동시에 장착할 수도 있다.

지난 시간에는 마이크로비트와 마퀸 RC카를 이용해 전후진과 회전 동작을 코딩해봤다. 이번 시간에는 초음파 센서를 이용해 장애물을 감지하면서 이동하는 코딩을 해볼 것이다. 마퀸 조립 과정은 지난 편을 참조하면 된다.

[그림3] 장애물을 감지하는 마퀸 RC카
[그림3] 장애물을 감지하는 마퀸 RC카

이번에는 코딩에서 필수로 사용되는 함수라는 기능을 사용해볼 것이다. 함수는 여러 역할이 있지만 기본적으로 다른 사람이 내 코딩을 봤을 때 이해할 수 있도록 간략하게 구성하는 게 좋다. 본격적인 코딩 전에 우선 [그림4]처럼 확장 프로그램을 설치해보자.

[그림4] 확장 프로그램 설치 이미지
[그림4] 확장 프로그램 설치 이미지

확장 프로그램 설치가 끝나면 이제 본격적으로 함수를 작성해보자. 먼저 [고급]탭의 [함수]꾸러미에서 [함수 만들기…]를 선택한다[그림5].

[그림5] 함수 만들기
[그림5] 함수 만들기

[그림6]과 같은 창이 뜰 경우 ‘doSomething’을 [전진]으로 변경해준 후 완료를 누르면 된다.

[그림6] 함수 편집
[그림6] 함수 편집

완료를 누르면 [그림7]과 같이 함수 블록이 생성된다.

[그림7]
[그림7]

함수 ‘전진’ 블록이 생겼다면 [그림8]처럼 [Motor [M1] dir [CW] speed (150)] 블록을 2개 가져온 후, 하나를 [Motor [M2] dir [CW] speed (150)]로 변경한다. 이것은 마퀸 RC카가 전진하기 위한 블록이다.

[그림8]
[그림8]

같은 방법으로 함수 [후진 후 회전]을 하나 더 만들어 [Motor [M1] dir [CW] speed (150)]을 4개 가져온 뒤, [기본] 꾸러미에서 [일시 중지 1000(ms)] 블록을 2개 가져와 [그림9]처럼 값을 변경해준다.

[그림9] 후진 후 회전 함수 블록
[그림9] 후진 후 회전 함수 블록

이제 본격적으로 만든 함수들을 활용할 차례다. [기본]꾸러미에서 [무한반복 실행] 블록을 가져온 후, [논리]꾸러미에서 [만약(if) <> 이면(then) 실행, 아니면(else) 실행] 블록을 넣어준 뒤, [논리]꾸러미에서 다시 부등호 블록을 가져와 if 블록에 넣어준다[그림10].

[그림10] 초음파 센서 감지 블록
[그림10] 초음파 센서 감지 블록

이제 [maqueen]꾸러미에서 (sensor unit(CM)) 블록을 가져온 뒤, 부등호 앞쪽에 넣고 뒤쪽에는 10이라는 숫자를 넣는다. 마지막으로 [함수] 꾸러미에서 [call 후진 후 회전], [call 전진] 블록을 하나씩 가져와 [그림11]과 같이 넣으면 코딩이 완성된다.

[그림11]
[그림11]

함수 [전진] 블록은 마퀸 RC카가 전진할 때 필요한 블록 코딩만 담겨있으며, 함수 [후진 후 전진]은 RC카가 후진 후 전진하는 기능이 담긴 블록 코딩만 담겨있다. 이런 기능이 담긴 함수들을 필요할 때만 Call 블록을 이용해 불러주면 해당 함수 내부에 있는 블록을 간편하게 실행할 수 있는 것이 함수의 장점이다. 이 기능을 통해 반복되는 동작을 한 번 더 작성하지 않아도 되고, 다른 사람이 코드를 볼 때 이 함수가 어떤 기능을 하는 함수인지 쉽게 알아볼 수 있다.

또 이번 블록 코딩은 평소에는 RC카가 전진을 하다가 앞면의 초음파센서가 거리를 쟀을 때 장애물과의 거리가 10cm 이하일 경우, 후진 후 회전해 차체를 조정하는 식으로 장애물을 회피하는 코딩이다. 이런 동작만으로도 간단하게 벽과 같은 장애물을 피할 수 있다.

 

마치며

이런 동작 방식은 자율주행 자동차가 주변에 있는 물체를 탐지해 충돌을 피하는 방법과 비슷한 원리인데, 이런 간단한 코딩이 복잡해지고, 보다 정확한 값을 가진다면 실제 자율주행 자동차와 같이 움직일 수 있게 되는 것이다. 그럼 다음 시간에는 마퀸 RC카에 있는 레인보우 LED를 활용해 차량을 경찰차처럼 꾸며보자.

글 | 전자 엔지니어 전문몰 IC뱅큐