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

마이크로비트 레인보우 LED 조작하기 ②

마이크로비트(Micro:bit)는 영국의 BBC에서 제작한 코딩교육용 교구다. 비슷한 제품으로는 아두이노가 대표적인데, 아두이노와 달리 마이크로비트는 크기가 더 작고 센서와 LED, 버튼을 내장하고 있어 좀 더 쉽게 사용할 수 있다. 또한 마이크로비트 웹사이트에서 블록을 이용해 코딩하고, 바로 컴파일할 수 있다는 것이 장점이다 [그림1]. 

마이크로비트 웹사이트의 코딩은 https://makecode.microbit.org 에서 가능하고 한번 접속한 적이 있는 경우 웹에서 저장 후 오프라인상태에서도 블록코딩을 할 수 있다. 또한 블록코딩 외에도 자바스크립트로 변환 후 타이핑 코딩도 가능하다 [그림2]. 또한 안드로이드, IOS환경에서의 어플리케이션도 정식 지원하며 모바일에서 블루투스를 이용한 업로드를 지원한다 [그림3].

[그림1]
[그림1]
[그림2]
[그림2]
[그림3]
[그림3]

마이크로비트 레인보우 LED와 마이크 조작하기

마이크로비트는 코딩과 피지컬 컴퓨팅의 동시 체험과 함께, 아이들도 쉽고 재미있게 따라 할 수 있도록 만들어진 코딩교육용 교구다. 지난 시간에는 마이크로비트와 원형 레인보우 LED를 이용한 마이크로비트 코딩을 통해 여러 가지 컬러로 빛을 낼 수 있는 코딩을 해봤다. 이번에는 이 원형 레인보우 LED에 내장된 MIC 센서를 이용해 소리를 감지하면 색상이 바뀌는 코딩을 해볼 것이다.

마이크로비트 레인보우 LED를 조작하려면 우선 기존 마이크로비트 Dot-Matrix LED가 아닌, RGB값과 타이밍을 조절할 수 있는 레인보우 LED가 필요하다. 레인보우 LED는 여러 종류가 있지만 이번 시간에는 Yahboom의 레인보우 LED를 활용할 것이다 [그림4].

[그림4] Yahboom 마이크로 – LED 와 내장 마이크
[그림4] Yahboom 마이크로 – LED와 내장 마이크

소리를 감지함에 따라 LED 색 바꿔보기

이번 코딩은 조금 복잡할 수 있으니 좀 더 세밀하게 살피며 따라올 필요가 있다. 또한 코드가 길어짐에 따라 블록코드를 사용하는 방법 등을 생략했으니, 블록코드를 찾는 방법은 검색을 하거나 블록코드 색상에 함수 꾸러미의 색상이 매칭되므로 해당 기능을 이용하길 바란다.

우선 마이크로비트 웹 코딩 페이지에 접속 후 [고급] – [확장]버튼을 누른 후 “NeoPixel”을 입력해 라이브러리 함수를 만들어 주자[그림5].

[그림5] NeoPixel 함수
[그림5] NeoPixel 함수
[그림6] 마이크로비트 Make code
[그림6] 마이크로비트 Make code

상단의 검색하기 버튼을 통해 블록 이름을 검색하거나, 블록의 색상과 좌측에 있는 함수꾸러미의 색상이 동일하므로 색상에 맞춰 찾으면 된다.

우선 [시작하면 실행] 블록이다. 해당 블록은 맨 위의 원형 레인보우 LED를 초기화하고, 24개 LED의 밝기를 설정할 변수 “밝기”, 소리 센서 인식 숫자를 넣어줄 변수 “sound_count”를 만들어 본다 [그림6]. 마지막으로 [배열]을 사용해 neopixel의 8가지 색을 변수 color에 저장하자 [그림7].

[그림7] 블록 코딩 1문단
[그림7] 블록 코딩 1문단

다음은 무한반복 실행이다. 함수 bright_150을 호출한 뒤 100ms 중지하고 함수 bright_0를 호출한다. 그리고 이 작업을 계속 반복하자 [그림8].

[그림8] 블록 코딩 2문단
[그림8] 블록 코딩 2문단

[그림9]의 블록코딩은 간단히 말해 마이크 모듈을 이용하여 소리를 감지할 때마다 색 LED를 서서히 빛나게 하는 코딩이다. 먼저 변수 밝기가 0부터 150이 될 때까지 반복(for)하는 블록을 넣는다. 그 안에 만약(if) 블록을 사용하여 P1의 소리 센서가 150 이상의 소리를 감지하면 sound_count 변수의 값을 1 증가시킨다. 변수 sound_count의 수가 8이 되면 다시 0으로 초기화해 준다.

RGB LED의 밝기는 150에서 반복 블록으로 0부터 150까지 증가하는 변수 밝기의 값을 뺀 값으로 저장한다. 빛의 색은 변수 color에 저장되어 배열 중에서 인식한 소리의 수를 저장한 변수 sound_count의 값과 같은 위치의 색이다. 이제 이 설정을 블록 show로 보여주자 [그림10]. 

[그림9]
[그림9] 블록 코딩 3문단
[그림10] 블록 코딩 4문단
[그림10] 블록 코딩 4문단

이 블록 코딩은 [그림9]와 전체적으로 같지만 [strip set brightness [밝기]] 부분만 ‘150- 밝기’에서 ‘밝기’로 바뀌었으며, 그 이유는 색깔 LED의 빛이 약해졌다가 다시 강해지는 것을 반복하기 위해 해당코딩을 넣은 것이다.

 

마치며

위에서 설명한 블록코딩 문단 전체를 만든 후 마이크로비트에 업로드하고 레인보우 LED에 장착하면 LED가 돌아가는 것을 확인할 수 있으며 자세한 영상은 링크를 통해 확인해보자. 

 

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