micro:bit 알아보기

micro:bit 알아보기

co:bit Training Kit로 코딩을 하기위해서 먼저 Kit의 핵심인 micro:bit에 대해 알아봅시다. co:bit Training Kit의 핵심인 micro:bit는 영국 BBC에서 제작한 교육용 초소형 컴퓨터입니다.

micro:bit의 하드웨어 구성, 코딩 방법 등을 알아봅시다. micro:bit에는 센서, 버튼, 및 LED를 내장하고 있습니다. 또한 micro:bit는 확장 커넥터를 연결하면, 여러개의 I/O를 이용해서 더 많은 센서 등을 연결할 수 있습니다. micro:bit를 co:bit Training Kit 베이스 보드에 연결해서 LED 광고판, 간이 짐벌,  자동문, 비행기 러더 시뮬레이터, 초간단 초음파감지기 등 재미있는 메이킹과 코딩이 가능합니다. 

micro:bit의 하드웨어

mico:bit의 하드웨어는 아래 그림과 같습니다. 

이미지출처: microbit.org

하드웨어 요약 

micro:bit에 내장된 주요 하드웨어 장치는 다음과 같은 것이 있습니다.

  • 모두 25개(5×5)의 LED로 구성된 LED스크린 
  • A/B 두개의 버튼 
  • 20개의 확장 핀 
  • 온도 센서
  • 가속도 센서와 
  • 라디오(Radio) 기능, 블루투스 기능 

LED

LED는 발광 다이오드라는 빛을 내는 장치입니다. micro:bit에는 가로 세로 5개씩, 모두 25개의 LED가 micro:bit 전면에 배치되어 있습니다. 이것을  LED 스크린이라고 합니다. 이 LED 스크린에 글자, 아이콘, 숫자 등을 디스플레이 할 수 있습니다. 

LED가 동작하도록 코딩하려면 다음 클래스를 보세요.

 

버튼

micro:bit는 LED 스크린 왼쪽과 오른쪽에 두개의 버튼을 가지고 있습니다. 왼쪽의 버튼이 A버튼이고 오른쪽 버튼이 B버튼입니다. 이 버튼이 눌러질 때, micro:bit가 어떤 동작을 하도록 코딩을 할 수 있습니다. 

버튼이 동작하도록 코딩하려면 다음 클래스를 보세요. 

micro:bit는 25개의 외부 장치를 연결할 수 있는 핀이 있습니다. 이 핀을 통해서 LED, 센서, 모터 등을 동작 시킬 수 있습니다. co:bit Training Kit의 센서, 장치들도 이 핀을 이용해서 동작시킬 수 있습니다. 

핀이 동작하도록 코딩하려면 다음 클래스를 보세요. 

가속도 센서

가속도센서는 움직임을 감지하는 센서입니다. micor:bit에는 micro:bit 보드를 건드리거나 흔들거나 하면 그 움직임을 감지할 수 있습니다. 감지할 수 있는 동작은 흔들기, 떨어뜨리기, 뒤집기, 기울기 등입니다. 

가속도센서를 이용할 수 있도록 코딩하려면 다음 클래스를 보세요.

 

무선통신

micro:bit는 라디오(Radio)기능을 가지고 있습니다. 그래서 micro:bit 간에 무선으로 데이터를 주고 받을 수 있습니다. 이 라디오 기능을 이용해서 micro:bit 리모컨을 만들거나, 센서 장치등을 만들 수 있습니다. 

라디오 기능을 이용할 수 있도록 코딩하려면 다음 클래스를 보세요.

 

블루투스 

micro:bit는 라디오 기능 말고도 블루투스 기능을 가지고 있습니다. 이 블루투스 기능을 이용해서 PC나 스마트폰/태블릿과 무선으로 연결해서 데이터를 주고 받을 수 있습니다.  micro:bit를 스마트폰 앱과 연동하는 코딩을 할 수 있습니다. 예를 들어 micro:bit에 연결된 센서 정보를 스마트폰 앱으로 보낼 수 있습니다.

블루투스 코딩을 해 보려면 다음 클래스를 보세요. 

  • co:bit Training Kit 블루투스 코딩

 

micro:bit 사용하기 – PC와 연결하기

자 이제 micro:bit로 코딩을 해 봅시다. 제일 먼저 micro:bit를 micro USB 케이블을 이용해 컴퓨터에 연결하세요. micro:bit는 PC, 애플 맥, 구글 크롬북에서 사용이 가능합니다. 아래 그림처럼 micro:bit에 micro USB를 연결하고 PC에도 연결합시다. 

 

PC에 micro:bit를 연결하면 PC의 탐색창에 “micro:bit”가 나타납니다. 자세한 사항은 아래 “코드 다운로드”를 봐 주세요. 

 

micro:bit 사용하기 – 블록 코딩하기

micro:bit로 코딩하는 방법은 아래 애니메이션에 잘 설명되어 있습니다. 블럭 코딩을 시작하기 위해서는 먼저 웹브라우저를 열고, 마이크로소프트의 블럭 에디터(편집기) 화면으로 갑니다. 

마이크로소프트 블럭 에디터 바로가기 

편집기를 열고 우선 블럭을 이용해서 간단한 코드를 만듭니다. 그리고 아래쪽에 다운로드(Download) 버튼을 클릭합니다.

 

micro:bit 사용하기 – 코드 다운로드

코딩이 완성되고, 블럭 에디터의 “다운로드(Download)” 버튼을 누르면 확장자가 “hex”인 파일이 다운로드 됩니다. 이 “hex” 파일은 우리가 만든 코드를 mcro:bit에서 실행할 수 있도록 만들어진 파일입니다. “hex” 파일은 micro:bit로 보내져야 합니다. 보내는 방법은 마치 파일을 USB 메모리에 복사하는 것과 같습니다. 아래 애니메이션에 잘 설명되어 있습니다. “hex”파일을 마우스로 드래그해서 micro:bit로 복사해 넣으면 됩니다. 윈도 운영체제에서는 마우스 오른쪽 클릭 후, “Send To→MICROBIT” 를 선택해도 됩니다. 

애플 맥(Mac) 컴퓨터에서는 다음과 같이 하면 됩니다.

 

micro:bit 사용하기 – 코드 동작을 확인하기

micro:bit에 코드를 복사하면, 복사하는 동안 micro:bit이 동작이 멈추고, 보드 뒷면의 노란색 LED가 깜빡이게 됩니다. 이 노란 LED가 깜빡이는 동안 복사가 진행되는 것 입니다. 복사가 끝나면 복사한 코드가 바로 실행이 됩니다. 

 

co:bit Training Kit 시작하기

co:bit Training Kit 알아보기

co:bit Training Kit는 micro:bit의 기능을 확장해 주는 피지컬 코딩 교육용 Kit입니다.  co:bit Training Kit는 micro:bit에 바로 연결하기 힘든 DC모터, 서보모터, 조이스틱 등 센서와 장치를 쉽게 연결할 수 있도록 해 줍니다. 또한 Kit 패키지는 micro:bit에 내장되지 않은 다양한 센서와 장치를 제공해서 별도 구매 없이 대부분의 피지컬 컴퓨팅 학습을 할 수 있습니다.

co:bit Training Kit 패키지 구성

co:bit Training Kit의 패키지 안에는 다음과 같은 센서와 장치가 포함되어 있습니다.

  1. 영국 BBC의 micro:bit 컴퓨터 보드
  2. co:bit 베이스 보드
  3. 초음파센서
  4. 토양습도센서
  5. 서보모터
  6. DC모터 팬 모듈
  7. 조이스틱
  8. 포텐쇼미터
  9. IR센서

co:bit Training Kit 전용 불럭

마이크로소프트 블럭 에디터는 사용자가  편리한 코딩을 위해 전용블럭을 추가할 수 있도록 해 줍니다. 전용 블럭을 사용하면 한 두개의 블럭만으로 복잡한 센서나 장치를 위한 코딩을 쉽게 할 수 있습니다. co:bit Training Kit가 제공하는 블럭 에디터용 전용블럭은 다음과 같은 것이 있습니다. 각 전용블럭의 상세한 설명은 각 클래스에 설명되어 있습니다. 

co:bit Training Kit 베이스보드

co:bit Training Kit 베이스 보드는 micro:bit와 여러가지 센서와 장치를 연결해 주는 보드입니다.

초음파센서 

Kit에 포함된 초음파센서는 약 30cm 이내의 거리를 측정할 수 있는 센서입니다. 초음파센서는 초음파라는 사람 귀로는 들을 수 없는 소리를 이용해서 거리를 측정합니다. 먼저 센서에서 초음파를 내보냅니다. 이 소리가 물체에 반사되어 다시 센서로 돌아오면 그 시간차이를 이용해서 거리를 측정합니다. co:bit 베이스보드의 “Ultrasonic Sensor”와 연결하면 사용 가능합니다.

 

토양습도센서

토양습도센서는 화분같은 것의 흙에 수분이 어느정도 포함되었는지 측정할 수 있는 센서입니다.  센서 모듈은 수분탐지 프로브와 센서보드 두부분으로 되어 있습니다. 수분탐지 프로브를 수분이 포함된 화분이나 흙(혹은 물이 담긴 물컵도 가능)에 꽂고 센서보드와 co:bit 베이스 보드의 “Soil Moisture Sensor”와 연결하면 사용 가능합니다.

 

서보모터 

서보모터의 서보(Servo)의 어원은 라틴어의 Servue로서, 노예라는 의미를 가지고 있습니다. 서보모터는 사용자가 전기적인 신호를 주면 지시한 만큼의 각도로 회전하는 기능을 수행합니다. 회전하는 각도는 -180° ~ 180° 입니다. 서보모터와 co:bit 베이스 보드의 “Servo Motor”연결하면 사용 가능합니다.

 

DC모터 팬 모듈

DC모터는 장남감에 많이 사용되는 모터입니다. DC모터에 배터리를 연결하면 모터가 시계방향(CW) 또는 반시계방향(CCW)으로 회전합니다. DC모터는 전압을 이용해서 회전속도를 조절할 수 있습니다. Kit의 DC모터는 재미를 더하기 위해서 작은 팬을 달아 놓았습니다. DC모터 팬 모듈로 선풍기나 비행기 시뮬레이터 같은 재미있는 코딩을 할 수 있습니다. DC모터 모듈을 co:bit 베이스보드 “DC Motor”에 연결하면 사용 할 수 있습니다.

 

조이스틱 

조이스틱은 PC에 연결해서 게임을 할 때 사용하는 마우스나 키보드 같은 입력장치 입니다. 조이스틱으로 키보드나 마우스로는 할 수 없는 재미있는 게임을 할 수 있습니다.  조이스틱은 가변저항이라는 장치를사용합니다. 상세한 원리와 조이스틱의 코딩은 Kit의 조이스틱 클래스에서 공부할 수 있습니다. 조이스틱 모듈을 co:bit 베이스 보드의 “Joystick”에 연결하면 사용할 수 있습니다.

 

포텐쇼미터

포텐쇼미터는 오디오 등 전자제품의 볼륨 조정 등을 위해 많이 사용되는 입력장치 입니다. 포텐쇼미터에는 조이스틱과 같이 가변저항이라는 장치를 사용합니다. 포텐쇼미터의 입력값의 범위는 0 ~ 1024값 입니다. 상세한 원리와 포텐쇼미터 코딩은 Kit의 포텐쇼미터 클래스에서 공부할 수 있습니다. 포텐쇼미터를 “Potentiometer”에 연결하면 사용할 수 있습니다.

 

IR센서

IR센서는 적외선 센서라고도 합니다. 적외선은 사람의 눈에는 보이지 않지만 아주 짧은 거리를 측정하는데 자주 쓰입니다. Kit에 내장된 IR센서는 적외선을 이용해서 10cm이내의 거리에서 장애물이 있는지 파악하는데 좋습니다. 장애물이 있으면 센서 입력값이 1이 됩니다. 만약 장애물이 없으면 센서 입력값이 0이 됩니다. 상세한 원리와 IR센서 코딩은 Kit의 IR센서 클래스에서 공부할 수 있습니다. IR센서를 co:bit 베이스보드의 “IR Sensor”에 연결하면 사용할 수 있습니다.

버저(스피커)

버저는 전기신호를 소리로 바꾸어주는 장치입니다. 버저는 co:bit 베이스 보드에 내장되어 있습니다.  버저를 이용해서 간단한 소리들과 원하는 음계의 소리를 낼 수 있습니다. 상세한 원리와 버저 코딩은 Kit의 버저 클래스에서 공부할 수 있습니다. 

co:bit Training Kit 기초강좌 1. LED, 블럭, 핀, 버튼

블럭 에디터 사용해 보기

co:bit Training Kit를 시작해 봅시다. co:bit Training Kit에 내장된 micro:bit는 마이크로소프트가 제공하는 블럭 에디터를 사용하여 코딩을 합니다. 이번 클래스에서는 블럭 에디터를  사용하는 방법을 배워보도록 하겠습니다. 블럭 에디터는 웹에서 동작하는, 스크래치와 비슷한 블럭 코딩 환경입니다. co:bit Training Kit에서 가장 간단한 코딩이 LED 코딩입니다. 그래서 제일 먼저 LED 를 이용한 코딩을 해 보면서 블럭 에디터 사용법을 학습 합니다. 

준비물

이번 프로젝트의 준비물은 다음과 같습니다.

  • co:bit training kit 베이스 보드 (micro:bit 장착한 상태)
  • 마이크로 USB 케이블
  • 웹브라우저 연결 가능한 PC (맥북, 리눅스 포함) 혹은 크롬북
  • 오이, 당근 같은 채소 2토막 혹은 과일 2토막

하드웨어를 준비해 봅시다. 

제일 먼저 co:bit 베이스 보드에 micro:bit를 장착을 합니다. 장착을 할 때는 micro:bit의 LED와 버튼이 위로가게 장착을 합니다.

그리고 PC와 co:bit 베이스보드를 마이크로 USB 케이블로 연결을 합니다. 그리고 PC에서 웹브라우저를 실행합니다. 웹브라우저는 마이크로소프트의 에지 혹은 익스플로러, 구글의 크롬 등 어떤 브라우저라도 상관이 없습니다.

그리고 웹브라우저에서 블럭코딩을 하기위해 블럭에디터 사이트로 갑니다. 마이크로소프트의 블럭 에디터는 아래를 클릭해서 들어갈 수 있습니다. 

마이크로소프트 블럭 에디터 바로가기

블럭 에디터에 제대로 접속을 했으면 아래와 같은 화면이 뜨게 됩니다.

 


코딩 프로젝트 1: 블럭 에디터 알아보기  

프로젝트 개요

블럭 에디터를 처음 접속해서 들어가면 아래 그림처럼 블럭 에디터 화면이 보일 것입니다. 이 화면에서 각 화면의 기능에 대해서 설명하도록 하겠습니다. 우선은 이번 코딩과제에서 필요한 부분만 설명하겠습니다.

  1. 프로젝트 찾아보기: 새로운 프로젝트를 시작하거나 이전에 만들었던 프로젝트를 열고자 할 때, 여기를 클릭합니다.
  2. micro:bit 시뮬레이터: 블럭으로 코드를 만들고, 실제 micro:bit에서 실행해 보기전에 시뮬레이션을 할 수 있는 micro:bit 시물레이터입니다. 
  3. 블럭 영역:  micro:bit 코딩에 사용할 수 있는 다양한 블럭들이 있는 곳입니다. 여기서 필요한 블럭을 가져다가 4번 코딩 영역에 가져다 놓고 코딩을 합니다. 
  4. 코딩 영역: 블럭영역에서 블럭을 가져다가 여기서 블럭을 조합해서 코딩을 합니다. 
  5. 다운로딩: 코딩이 완성되면 이 버튼을 클릭하면 코드가 만들어져서 PC의 다운로드 플더에 저장이 됩니다. 
  6. 프로젝트이름: 프로젝트의 이름을 정할 수 있습니다.  

만약 블럭 에디터의 언어가 한글이 아니고 영어로 되어 있다면, 언어를 한글로 바꿀 수 있습니다. 언어를 한글로 바꾸려면 다음과 같이 하면 됩니다. 우선 화면 위쪽의 오른쪽에 보면 셋팅 버튼이 있습니다.

셋팅 버튼을 클릭하면 다음 메뉴가 나옵니다. 여기서 “Language(언어)” 항목을 클릭합니다. 그러면 블럭 에디터에서 지원이 되는 여러 언어들의 리스트가 나옵니다.

여기서 “한국어”를 선택하면 블럭 에디터의 기본 언어가 한글로 정해지고 모든 메뉴, 블럭 등의 글자들이 한글로 표시가 됩니다.

블럭 에디터를 처음 열거나, 새로운 프로젝트를 실행하면 4번 코딩 영역에서 미리 두개의 블럭이 있는 것을 볼수 있습니다. 

왼쪽의 “시작하면 실행” 블럭은 코드가 시작할 때 실행이 됩니다. 오른쪽에 “무한 반복 실행” 블럭은 “시작하면 실행” 블럭이 실행된 후 실행이 됩니다. “시작하면 실행” 블럭이 한번 만 실행이 되는 반면, “무한 반복 실행” 블럭은 무한히 반복 실행이 됩니다.

이제 블럭을 사용해서  micro:bit의 LED 스크린에 숫자를 디스플레이를 해 봅시다 (micro:bit의 LED 스크린에 대해서는 2 클래스에서 상세히 배웁니다). LED 스크린에 숫자 0 -> 1 -> 2 -> 0 차례대로 디스플레이 되도록 코딩을 합니다. 숫자가 2가 디스플레이 된후에는 숫자 0이 다시 디스플레이 됩니다. 그리고 이것이 계속 반복되도록 코딩을 합니다. 코딩을 잘 했다면 co:bit이 아래  동영상 처럼 동작이 될 것 입니다.    

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

블럭코딩 하기 

제일 먼저 할 일은 ‘시작하면 실행’ 블럭에 ‘LED 스크린 지우기’ 블럭을 가져와서 LED 스크린을 모두 off 시키는 것입니다.  

LED 스크린을 모두 지운 후에는 ‘무한 반복 실행’ 블럭에 숫자를 변경하는 블럭을 넣으면 됩니다. 우선 LED 스크린에 숫자를 표시하려면 다음의 ‘정수 출력’ 블럭을 사용합니다. 또한 0.1초 지연을 시키려면 ‘ 일시 중지(ms)’ 블럭을 사용합니다. 참고로 0.1초는 100ms 입니다 (mili second)

LED 스크린에 숫자를 ‘0’ -> ‘1’ -> ‘2’ -> ‘0’ 이런식으로 나타내려면 ‘무한 반복 실행’ 블럭 안에 ‘정수 출력’ 블럭과 ‘일시 중지(ms)’ 블럭을 번갈아 넣으면 됩니다.

‘무한 반복 실행’ 블럭 안에 있는 블럭들은 순서대로 무한하게 반복실행 됩니다. 따라서 제일 먼저 정수 ‘0’이 LED 스크린에 표시됩니다. 그리고 0.1초를 쉬고 정수 ‘1’이 LED스크린에 표시됩니다. 역시 0.1초를 쉬고 정수 ‘2’가 LED스크린에 표시됩니다. 이렇게 한번의 순서가 끝이나면 ‘무한 반복 실행’ 블럭 때문에 처음부터 다시 실행이 반복됩니다.

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

micro:bit 보드로 코드를 다운로드 하기 

코드를 다 완성 했다면 이번에는 코드를 co:bit Training Kit(micro:bit)로 다운로드 해야 합니다. 다운로드를 위해서는 아래 버튼을 클릭하면 PC의 “다운로드” 폴더에 완성된 코드가 다운로드 됩니다.

다운로드 된 코드는 다음 형태의 이름을 가집니다. 

microbit-이름없음.hex

코드를 다운로드 하기전에 이름을 바꾸고 싶다면 “다운로드” 버튼 옆에 “이름없음”을 원하는 이름으로 변경하면, 다운로드 되는 코드의 이름도 바뀝니다.  다운로드 되는 코드 파일의 확장자는 “.hex” 입니다.  이미 만들어진 프로젝트를 편집 버튼을 눌러서 블럭 에디터를 열었다면 그 프로젝트의 이름은 아래와 같을 것입니다. 이 이름 역시 동일한 방법으로 변경이 가능합니다.

microbit-cobit_tr_ba_1_led_number.hex

지금 다운로드 한 것은 코드를 PC로 다운로드 한 것이지, 코드가 다운로드가 되면 아래의 방법으로 다운로드된 코드를 micro:bit로 보낸 것은 아닙니다. 코드를 micro:bit로 보내려면 아래의 그림을 참조합니다.  micro:bit가 PC에 연결되어 있으면, PC의 경우 윈도 탐색기에 micro:bit가 USB메모리 처럼 자리잡고 있습니다. 다운로드 된 코드를 드래그 앤 드롭으로 탐색기의 micro:bit로 복사하면 자동으로 코드가 micro:bit로 복사 됩니다. 복사 되는 동안 micro:bit의 뒷면의 노란색 LED가 계속 깜빡입니다. 복사가 끝이나면 자동으로 복사가 된 코드가 실행이 됩니다. 

 

따라해보기

LED 스크린에  9 -> 8 -> 7 -> … -> 1 -> 0 -> 9… 순서로 숫자를 표시해 봅시다. 숫자 표시되는 간격은 역시 0.1초로 합니다. 

 


코딩프로젝트 2: 버튼을 사용해 보자 
 
과제 개요
 
micro:bit에는 A/B 이렇게 2개의 버튼이 있습니다. 이 버튼이 눌러질 때 어떤 일이 실행이 되도록 코딩을 할 수 있습니다. 이번 코딩과제에서는 버튼이 눌러지면 LED에 문자열이 스크롤 되도록 코딩을 해 봅시다. 우리가 만들려는 코드의 동작은 아래와 같습니다. 
 
  • 코드가 시작되면 하트모양의 아이콘을 LED 스크린에 디스플레이 합니다.
  • 그러다가 버튼 A가 눌러지면 LED 스크린에 “Just Do It!”이라는 광고 문구를 스크롤 합니다.
  • 이 문구의 스크롤이 끝이나면 다시 LED 스크린에 하트모양의 아이콘이 표시되면 됩니다. 

코딩이 잘 되었다면 아래 동영상  처럼 동작이 될 것 입니다.

블럭 에디터에서 새로운 프로젝트를 시작하려면 다음과 같이 하면 됩니다. 화면 위쪽에서 왼쪽에 보면 “프로젝트 찾아보기” 가 있습니다. 이 “프로젝트 찾아보기”를 클릭하면 아래 화면이 나옵니다. 이 중에서 “새 프로젝트”를 클릭하면 블럭 에디터 화면이 새로운 프로젝트 화면으로 업데이트 됩니다. 기존에 작성한 프로젝트 코드는 자동으로 마이크로소프트의 서버에 저장됩니다. 이 저장된 프로젝트들 역시 이 “프로젝트 찾아보기” 화면에서 찾을 수 있습니다.  
 
블럭코딩의 흐름도
 
프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.
 
블럭코딩 하기
 
우선 하트모양의 아이콘을 LED 스크린에 디스플레이 하려면 다음과 같이 블럭 코딩을 하면 됩니다. “시작하면 실행”에는 아무 블럭을 넣지 않아도 됩니다.
 
micro:bit의 버튼은 A와 B 두 개가 있고, 이 버튼은 LED 스크린의 좌우에 있습니다. 
A 버튼이 눌러지면 이것을 알 수 있는 방법이 있을까요? 지금까지 우리가 사용한 기본 블럭들 밑에 입력 블럭들이 있습니다. 이중에서 A 혹은 B버튼이 눌러졌을 때 응답을 하는 블럭이 있습니다. 이 블럭은 “버튼 A 누르면 실행” 입니다. 말 그대로 버튼 A가 눌러지면 이 ‘버튼A를 누르면 실행” 블럭과 이 블럭안에 포함된 블럭들이 실행이 됩니다.
 
 
이 블럭 안에 다른 블럭들을 넣을 수 있는데, 버튼 A가 눌러지면 ‘버튼 A를 누르면 실행 ‘ 블럭 안에 있는 모든 블럭이 실행이 됩니다. 이 블럭의 실행이 끝이나면 보통은 ‘무한 반복 실행’ 블럭으로 돌아가서 ‘무한 반복 실행’ 안에 있는 블럭들이 실행이 됩니다.  아래 블럭은 버튼 A가 눌러지면 LED 디스플레이에 “Just Do It!” 글자가 스크롤 됩니다.
 
 
스크롤이 끝이나면 다시 ‘무한 반복 실행’블럭으로 돌아가서 하트모양의 아이콘이 LED 스크린에 표시됩니다.  
 
전체 프로젝트
 
전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

micro:bit 보드로 코드를 다운로드 하기 

코드를 다 완성 했다면 이번에는 코드를 코딩과제 1에서 한 것처럼 micro:bit로 다운로드해서 실행해 봅시다. 

따라해보기
다음과 같이 코딩을 해 봅시다. 
  • 블럭 에디터에서 새로운 프로젝트를 엽니다. 이름은 적당히 짓습니다. 
  • 코드가 시작되면 웃는 얼굴 아이콘이 LED스크린에 디스플레이 되도록 합시다. 
  • 버튼 A를 누르면 “OK let’s go”문구가 스크롤 되도록 합시다. 
  • 문구가 다 스크롤이 되면 다시 웃는 얼굴 이이콘이 LED스크린에 디스플레이 되도록 합시다. 

 


코딩과제 3: 핀을 사용해서 과일 키보드 만들기 
 
과제 개요
이번 과제에서는 co:bit Traning Kit의 핀 기능을 이용해서 과일 키보드를 만들어 봅시다. micro:bit에는 3개의 동그란 핀이 있습니다. 이 핀은 각각 P0, P1, P2 입니다. 아래 그림에서 0, 1, 2라고 표시되어 있습니다. 
사람의 몸은 전기가 흐르기 때문에  P0/P1/P2와 GND를 서로 잡으면 전기가 흐르게 됩니다. GND는 그라운드(땅)이라는 뜻으로 건전지의 (-)극과 같은 의미 입니다. 3V가 건전지의 (+)극에 해당합니다. 만약 아래 그림과 같이 연결을 한다고 가정해 봅시다. 
위 그림은 사람의 한쪽 손가락을 GND에 두고 P1에 당근, P2에 바나나를 연결합니다. 그리고 P0와 GND에 버저를 연결합니다. 이렇게 연결하고 사람의 다른 손가락으로 바나나나 당근을 터치하면 전기가 흐르게 됩니다. 과일이나 채소도 전기가 흐르기 때문입니다.  과일 피아노는 이런 원리를 이용해서 과일(채소)를 터치하면 소리가 나도록 한 장치 입니다. 이번 프로젝트에서는 이런 원리를 이용해서 co:bit 기반으로 과일 피아노 장치를 만들어 봅니다. 제대로 코딩을 했다면 아래 동영상처럼 동작을 하게 됩니다.

제대로 동작을 시키려면 한쪽 손가락을 co:bit 베이스 보드의 GND에 대고 다른 손가락으로 과일을 천천히 터치하면 됩니다. 

과일키보드 회로구성하기
먼저 LED를 코딩하기 위해 구성한 하드웨어에 아래와 같이 차례로 회로를 추가합니다.  co:bit 과일 키보드의 구성은 아래와 같습니다. 
 
먼저 Kit에 내장된 전선 2개가 하나로 묶인 전선뭉치를 준비합니다.
 
그 다음에 이 전선 뭉치를 다음과 같이 co:bit 베이스 보드와 연결을 합니다.
 
그 다음에는 이 전선뭉치의 한쪽 끝을 과일(혹은 당근 같은 채소)에 아래와 같이 연결합니다. 연결하는 방법은 그냥 과일에 전선끝에 달린 철심을 꼽으면 됩니다.
 
자 이제 하드웨어 준비가 끝이 났습니다. 이제 코딩을 할 차례입니다. 먼저 흐름도를 봅시다. 
 
블럭코딩의 흐름도
프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.
블럭코딩 하기
제일 먼저 “Fruit piano” 문구를 LED 스크린에 스크롤 하는 코딩을 해 봅시다. 코드가 처음 실행될 때, 스크롤을 해야 하므로 “시작하면 실행” 블럭을 사용합니다. 
그 다음에는 하트 아이콘을 계속 디스플레이 하는 코딩을 해 봅시다. 하트 아이콘을 계속 디스플레이 해야 하니까 “무한 실행” 블럭을 사용합니다. 
이번에는 핀 P1이나 P2가 터치되면 버저의 소리를 내는 코딩을 해 봅시다. P1과 P2가 터치되면 응답을 하는 블럭이 있습니다. 이 블럭은 “핀 P1 연결(on)되면 실행” 입니다.  말  P1혹은 P2 핀이 터치되면(연결되면) ‘핀 P1 연결(on)되면 실행” 블럭과 이 블럭안에 포함된 블럭들이 실행이 됩니다.
co:bit 베이스 보드에 내장된 버저에 소리를 내려면 다음 블럭을 사용하면 됩니다. 이 블럭은 “도(middle C)”음을 1박자 동안 버저를 통해서 냅니다. 
위 두가지 코드를 합쳐서 P1이 터치되면 “도(middle C)”음을 1박자 동안 내고, “웃음” 아이콘을 LED 스크린에 디스플레이 하는 코드는 아래와 같습니다. 
P1이 터치되면 “솔(middle G)”음을 1박자 동안 내고, “화남” 아이콘을 LED스크린에 디스플레이 하는 코드는 아래와 같습니다. 
코드를 제대로 동작 시키려면, co:bit 베이스 보드의 GND에 한쪽 손가락을 대고, 다른 손가락으로 과일 천천히 터치하면 됩니다. 
전체 프로젝트
전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다. 

 


따라해보기

 블럭 에디터에서 새로운 프로젝트를 열고, 이번 프로젝트와 유사하게 코딩을 해 봅시다.
  • P1과 P2에 과일혹은 (채소)를 연결하고,
  • “Fruit piano” 문자열을 스크롤 합니다.
  • 항상 웃음 아이콘을 디스플레이 합니다.
  • P1이 터치되면 정수 “1”을 디스플레이 하고 “미(middle E)” 2박자 울리고,
  • P2가 터치되면 정수 “2”를 디스플레이 하고 “라(middle A)”  2박자 울리도록 코딩을 해 봅시다. 
  • 코딩 후 제대로 동작을 시키려면 co:bit 베이스 보드 GND에 손가락을 대고 다른 손가락으로 과일이나 채소를 천천히 터치하면 됩니다. 

 


응용해보기

  • 버튼 A를 누르면 “도(middle C)”음이 1박자 울리도록 코딩해 봅시다.
  • 동시에 LED 스크린에는 “C”를 출력해 봅시다.
  • 버튼 B를 누르면 “솔(middle G)”음이 1박자 울리도록 코딩해 봅시다.
  • 동시에 LED 스크린에는 “G”를 출력해 봅시다.

co:bit Training Kit 기초강좌 2: LED 스크린을 활용해 보자.

LED에 대해 알아보자.

요즘 거실이나 방에 조명으로 많이 사용하는 LED(발광 다이오드)는 전기가 통하면 흰색, 빨간색, 노란색 등 다양한 빛을 낼 수 있습니다. LED는 신호등이나 버스 안내판 같은 곳에 사용되고 있습니다. 또한 광고판으로도 많이 사용하고 있습니다. LED 여러개를 디스플레이처럼 사용하는 것이죠. 상점, 지하철, 버스 등에서 많이 볼 수 있습니다. 이번 클래스에서는 micro:bit의 LED 스크린에 대해서 배워 봅시다. 

micro:bit의 LED 스크린

co:bit training kit의 머리역할을 하는 micro:bit에는, 가로 5줄 세로 5줄 이렇게 5×5 모두 25개의 LED가 micro:bit의 한쪽 면에 붙어 있습니다. 우리는 블럭 에디터를 사용해서 이 5×5 LED 스크린에 다양한 모양의 아이콘, 숫자, 글자 등을 나타낼 수 있습니다.  

준비물

이번 클래스의 준비물은 다음과 같습니다.

  • co:bit training kit 베이스 보드 (micro:bit 장착한 상태)
  • 마이크로 USB 케이블
  • 웹브라우저 연결 가능한 PC (맥북, 리눅스 포함) 혹은 크롬북

하드웨어를 준비해 봅시다. 

제일 먼저 co:bit 베이스 보드에 micro:bit를 장착을 합니다. 장착을 할 때는 micro:bit의 LED와 버튼이 위로가게 장착을 합니다.

그리고 PC와 co:bit 베이스보드를 마이크로 USB 케이블로 연결을 합니다. 그리고 PC에서 웹브라우저를 실행합니다. 웹브라우저는 마이크로소프트의 에지 혹은 익스플로러, 구글의 크롬 등 어떤 브라우저라도 상관이 없습니다.

그리고 웹브라우저에서 블럭코딩을 하기위해 블럭에디터 사이트로 갑니다. 여기까지 했으면 하드웨어 준비가 끝이 났습니다.

이크로소프트 블럭 에디터 바로가기

 


코딩프로젝트 1: 자유낙하 표정 애니메이션   

프로젝트 개요

LED 스크린에는 웃는 얼굴, 하트모양, 화난 얼굴 등 여러가지 아이콘을 디스플레이 할 수 있습니다.  이번에는 co:bit 보드를 자유낙하 시켜서 바닥에 떨어졌을 때, LED 스크린에 “당황” 아이콘과 “화남” 아이콘, 2가지 표정의 아이콘을 이용해서 마치 LED 스크린이 표정을 바꾸는  것 같은 간단한 애니메이션을 코딩해 보겠습니다. 코드의 동작은 다음과 같습니다.

  • 코드가 실행되면 “Smile!”문자열을 스크롤 합니다.
  • 그리고는 “웃음” 아이콘이 표시됩니다. 
  • co:bit 보드를 책상에서 20cm 정도 들었다가 떨어뜨립니다. 
  • 그러면 LED 스크린에  “당황” 아이콘과 “화남” 아이콘이 0.1초 간격으로 4번  번갈아 가면서 디스플레이 됩니다. 
  • 이후에는 다시  “웃음” 아이콘이 표시됩니다.

참고로 블럭 에디터에서 “당화”, “화남”, “웃음” 아이콘은 다음에서 찾을 수 있습니다. 마우스를 아래 블럭의 아이콘 들  위로 가져가면 아이콘의 이름이 나타납니다. 

 

코딩을 완성했으면 아래 동영상과 같이 동작을 하면 됩니다. 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

블럭코딩 하기

제일 먼저 코드가 실행되면 LED 스크린에 “Smile!” 문자열을 스크롤 해야 합니다. 그리고 “웃음” 아이콘을 디스플레이 해야 합니다. 이 두가지를 하려면 다음과 같이 블럭을 사용하면 됩니다.

문자열을 스크롤 하기 위해서는 “문자열 출력” 블럭을 사용합니다. “웃음” 아이콘을 디스플레이 하기 위해서는 “아이콘 출력” 불럭을 사용합니다.  “웃음” 아이콘을 디스플레이 한 다음에는 자유낙하를 감지하는 코딩을 해야 합니다. 자유낙하는 말 그대로 높은 곳에서 물체가 높은 곳에서 떨어지는 것을 말합니다. 여기서는 co:bit 보드를 책상에서 30cm 정도 들었다가 떨어 뜨리면 됩니다. 블럭 에디터는 자유낙하를 감지하는 기능의 블럭을 제공합니다.

블럭영역에서 입력 블럭들 중에서 “움직임 감지하면 실행” 블럭이 이 일을 합니다. “움직임 감지하면 실행” 블럭에서 다음 그림처럼 자유낙하 항목을 선택할 수 있습니다. 

자유낙하 움직임이 감지되면 이 블럭과 이 블럭 내부에 있는 블럭들이 실행이 됩니다.  co:bit 보드를 자유낙하 시킬 때 실행되어야 할 것들은 다음과 같습니다.

  • “당황” 아이콘 디스플레이
  • 0.1초 쉬고
  • “화남” 아이콘 디스플레이
  • 0.1초 쉬고
  • 이것을 4회 반복하고 다시 “웃음” 디스플레이

잠깐 여기서 블럭 에디터에서 사용하는 “반복” 블럭을 알아 봅시다. 다음 블럭은 반복 횟수를 정할 수 있는 “반복” 블럭입니다. 블럭 영역에서 반복 그룹에 있습니다.

위에 말한 4회 반복을 하려면 다음과 같이 코딩하면 됩니다.

이 “반복” 블럭을 이제 “움직임 감지하면 실행” 블럭에 넣어 봅시다. 그리고 마지막에 “웃음” 아이콘 출력 하는 블럭도 넣어 봅시다. 완전히 완성하면 다음과 같은 블럭이 됩니다.

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라해보기 
프로젝트를 약간 수정해서 스스로 코딩을 해 봅시다. 이번 프로젝트에서 아래 사항을 스스로 수정해서 코딩해 보기 바랍니다. 
  • 코드가 실행되면 “Shake!” 문자열이 스크롤 되도록 해 봅시다. 
  • 그리고 “하트” 아이콘이 디스플레이 되도록 해 봅시다. 
  • 프로젝트에서는 자유낙하가 감지되면 “당황” 아이콘과 “화남” 아이콘이 번갈아 디스플레이 되었는데, 이번에는 다른 아이콘 두개를 스스로 정해서 번갈아 디스플레이 되도록 코딩 해 봅시다. 
  • 즉 co:bit 보드를 흔들면 아이콘 애니메이션이 발생하는 것 입니다.  
  • 아이콘 애니메이션이 4번 실행되면 다시 “하트” 아이콘이 디스플레이 되도록 코딩 해 봅시다. 

코딩프로젝트 2: 가속도센서로 주사위 게임하기

프로젝트 개요

이번에는 co:bit 베이스 보드를 주사위로 만들어서 주사위 게임을 할 수 있도록 해 봅시다. 실제 주사위를 던지는 대신에 co:bit 베이스 보드를 한번 흔들면 1에서 6가지 숫자 중 임의의 한 숫자가 LED 스크린에 나타 나도록  하면 됩니다.

코드의 동작은 다음과 같습니다. 

  • 코드가 실행되면 “Dice…”문자열을 스크롤 합니다.
  • 그리고는 “하트” 아이콘이 표시됩니다. 
  • co:bit 보드를 흔들면 LED 스크린에 1~6 사이의 임의의 숫자가 2초간 디스플레이 됩니다.   
  • 이후에는 다시  “하트” 아이콘이 표시됩니다.

코딩이 제대로 되었다면 아래의 영상과 같이 동작을 할 것입니다.

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

블럭코딩 하기

제일 먼저 코드가 실행되면 LED 스크린에 “Dice…” 문자열을 스크롤 해야 합니다. 그리고 “하트” 아이콘을 디스플레이 해야 합니다. 이 두가지를 하려면 다음과 같이 블럭을 사용하면 됩니다.

문자열을 스크롤 하기 위해서는 “문자열 출력” 블럭을 사용합니다. “하트” 아이콘을 디스플레이 하기 위해서는 “아이콘 출력” 불럭을 사용합니다.  “하트” 아이콘을 디스플레이 한 다음에는 흔들기를 감지하는 코딩을 해야 합니다. 블럭 에디터는 자유낙하를 감지하는 것과 같이 흔들기도 감지하는 기능의 블럭을 제공합니다.

블럭영역에서 입력 블럭들 중에서 “움직임 감지하면 실행” 블럭이 이 일을 합니다. “움직임 감지하면 실행” 블럭에서 드롭다운 메뉴를 통해서 흔들림을 선택할 수 있습니다.  

흔들림을 감지하는 블럭을 알아보았으면, 그 다음에는 1~6사이의 임의의 정수를 출력하는 코딩을 해 봅시다. 우선 0~5사이의 임의의 정수를 출력을 해야 합니다. 임의의 정수를 출력하는 블럭은 블럭영역의 “계산” 그룹에 있습니다.

“계산” 그룹에서 “랜덤 선택(정수)” 블럭을 선택합니다. 이 블럭은 실행이 되면 0 ~ 4 사이의 임의의 정수를 출력합니다. 하지만 우리는 주사위를 만들어야 하므로 정수 출력 범위가 0 ~ 4가 아닌 0 ~ 5 이 되어야 합니다. 또한 출력 되어야 하는 숫자는 1 ~ 6  입니다. 그래서 “랜덤 선택(정수)” 블럭의 출력에 1을 더해 주어야 합니다. 이렇게 하려면 아래와 같이 블럭을 구성하면 됩니다.

위와 같이 블럭을 코딩하면 다음과 같이 동작합니다.

  • “랜덤 선택(정수)” 블럭에 의해서 0 ~ 5 사이의 임의의 정수가 출력됩니다.
  • 이 출력된 정수는 “더하기” 블럭에서 1이 더해 집니다.
  • 그리고 이 더해진 정수는 “정수 출력” 블럭에 의해서 LED 스크린에 출력 됩니다.

그리고 위 블럭을 “움직임 감지하면 실행” 블럭안에 넣습니다. 그리고 함께 2초 기다리기 기능의 블럭과 “하트” 아이콘 출력 블럭을 넣으면 코딩이 끝이 납니다. 

전체 코드는 전체 프로젝트에서 확인 할 수 있습니다. 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라해보기

위 주사위 게임을 아래와 같이 약간 변형해 봅시다. 

  • 흔들면 주사위 숫자가 나오는 것이 아니고 버튼 A를 누르면 주사위 숫자가 나오도록 코딩해 봅시다. 
  • 주사위 숫자 범위를 1~9까지로 변경해 봅시다.  

코딩프로젝트 3: 다마고치 게임 만들기
프로젝트 개요
이번 프로젝트에서는 아주 단순한 다마고치 게임을 만들어 봅시다. 다마고치는 1990년대 일본 반다이사에서 만든 디지털 애완동물 키우기 게임기입니다. 다마고치는 작은 LCD가 달려있고 , 여기에서 작은  디지털 캐릭터인 다마고치가 생활합니다. 사용자가 이 다마고치에게 밥을 주고, 만져주면 다마고치가 계속 성장합니다. 사용자가 일정시간 다마고치에게 밥을 주지 않고, 만져주지 않으면 다마고치가 병이 나고 성장하지 않습니다.
이번 프로젝트에서는 micro:bit와 LED 스크린을 이용해서 초간단 다마고치를 만들어 보겠습니다.  코드의 동작은 다음과 같습니다.
  • 먼저 코드가 실행이 되면 “Tamagochi!” 문자열을 스크롤 합니다.
  • 그리고 나서 아래와 같이 생긴 다마고치가 계속 움직입니다.

  • 다마고치는 0.5초 간격으로 한번씩 움직입니다. 따라서 완전히 움직이는 데는 2초가 걸리도록 합니다.
  • 시작할 때, 다마고치는 5개의 밥을 가지고 있습니다. 완전히 한번 움직이면 밥이 하나씩 줄어듭니다. 밥 5개가 다 떨어지면 다마고치는 “화남” 아이콘으로 변경됩니다.
  • 사용자가 버튼 A를 누르면 밥 5개가  다마고치에게 주어집니다. 밥이 다시 생기면 다마고치는 다시 움직이기 시작합니다.

 

코드가 제대로 완성이 되었으면 다음 비디오처럼 동작하게 됩니다.

블럭코딩의 흐름도
프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.
블럭코딩 하기
제일 먼저 코드가 실행되면 다음 동작이 실행이 되어야 합니다.
  • LED스크린에 “Tamagochi!” 문자열을 스크롤 해야 합니다.
  • 다마고치가 LED 스크린에 나타나기 (다마고치 애니메이션 그림 1을 디스플레이)
  • 다마고치에게 5개의 밥을 주기(“밥” 변수를 만들고 변수에 5를 저장하기)

“Tamagochi” 문자열 스크롤 이후에는 다마고치 애니메이션 그림 1을 LED스크린에 디스플레이 합니다.

그 다음에 “밥” 이라는 이름의 변수를 만들어서 “밥”에 숫자 5를 저장합니다. 저장하기 위해서는 아래의 ” ~ 값 ~ 저장” 블럭을 사용하면 됩니다. “밥”이라는 이름의 변수를 만드는 방법은 아래 팁을 보시면 됩니다. 
따라서 코드가 시작할 때, 즉 “시작하면 실행” 블럭안에 들어갈 블럭들은 다음과 같이 만들 수 있습니다.
팁: micro:bit 블럭 에디터에서 변수 만들기 

이미 스크래치를 공부한 사용자들은 변수(Variables)에 대해서 알고 있을 것입니다. 변수는 숫자, 문자, 문자열을 저장하는 공간입니다. 블럭 에디터에서 변수를 만들려면 블럭 영역에서 변수 그룹을 클릭하면 됩니다. 변수 그룹을 클릭하면 위 그림의 오른쪽 같은 화면이 나옵니다. 여기서 위쪽에 보면 “변수 만들기” 버튼이 있습니다. 이것을 클릭하면 변수의 이름을 물어보는 팝업창이 뜹니다. 

여기에 변수이름을 입력하고 “확인”을 클릭하면 새로운 변수가 생성됩니다. 우리는 “밥”이라는 이름을 입력합니다.  그리고 “확인”을 클릭하면 “밥”이라는 변수가 생긴 것을 확인 할 수 있습니다. 
“무한 반복 실행” 블럭의 코딩에 앞서, 버튼 A를 코딩해 보겠습니다. 버튼 A가 눌러지면 다음 동작이 실행되어야 합니다.
  • 다마코치에게 밥주기 (“밥” 변수에 5 저장)
  • 다마고치가 밥을 받아서 웃음 (LED 스크린에 “웃음” 아이콘)
  • 0.1초 동안 웃고있기 (0.1초 쉬기)
버튼 A를 누를 때 반응하는 블럭을 다음과 같습니다. 
“버튼 A 누르면 실행” 블럭은 버튼 A가 눌러지면 실행이 됩니다. 이 블럭의 안에 들어 있는 블럭도 모두 실행이 됩니다. 버튼 A가 눌러지면 “밥” 변수에 5를 저장하는 것은 아까 사용했던 블럭을 다시 사용합니다.
0.1초 쉬기 및 “웃음” 아이콘 출력 블럭은 이미 학습했으니 생략 하겠습니다. 버튼 A가 눌러졌을 때 실행될 블럭들은 다음과 같습니다.
버튼 A 코딩이 마무리 되었으면 “무한 반복 실행” 블럭안에 들어갈 블럭들을 코딩해 봅시다. “무한 반복 실행” 블럭 안에서는 다음과 같은 일을 해야 합니다.
  • 다마코치의 밥이 다 떨어졌는지 확인(“밥” 변수가 0보다 작은 지 확인)
  • 밥이 남았으면 다마고치를 한번 움직이게 하기 (다마코치 아이콘을 이동시키기)
  • 한번 움직이면 밥하나를 먹기(“밥” 변수에서 1 빼기)
  • 그 다음에 다시 밥이 다 떨어졌는지 확인하고, 밥이 다 떨어졌으면 다마고치가 화를 낸다(LED 스크린에 “화남” 아이콘 디스플레이)

다마고치의 밥이 남아있는지 확인(“밥”변수가 0보다 작은지 확인)은 다음과 같이 if문을 사용하면 됩니다. “밥” 변수가 0보다 작으면 “이면(then) 실행” 안에 다마고치가 화를 내는 블럭을 넣고, “밥” 변수가 0보다 크면 “아니면(else) 실행” 안에 다마고치가 움직이는 블럭을 넣으면 됩니다.

위 블럭을 구성하려면 다음과 같이 하면됩니다.

“밥” 변수는 변수블럭 그룹에서 가져오고, 부등호는 논리 블럭에서 가져오고, if문은 역시 논리 불럭에서 가져옵니다.

그 다음에는 다마코치가 LED스크린을 한바퀴 움직이는 것과 한바퀴 움직인 후 밥이 하나 줄어드는 것을 코딩해야 합니다. 이 코딩은 아래와 같이 코딩하면 됩니다. 그리고 이것을 if문에 넣습니다. 주의 할 것은 이 블럭들은 if문의 “아니면(else) 실행”에 들어가야 합니다.

 

이제 마지막으로  “이면(then) 실행”에 “화남” 아이콘을 디스플레이 하는 블럭을 넣습니다. “무한 반복 실행” 부분의 완성된 코드는 아래와 같습니다.

전체 프로젝트
전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.
따라해보기
다마고치 게임을 아래와 같이 약간 변형해 봅시다.
  • 다마코치의 움직임을 스스로 한번 만들어서 적용해 보세요. 다마고치의 모양과 움직임을 변경하거나 추가하면 됩니다.
  • 버튼 A를 누르면 밥을 5개 주는 것이 아니라 3개만 주도록 코딩해 봅시다.

응용해보기

  • 다마고치 게임에서 버튼 B를 누르면 다마고치가 잠이 들도록 코딩해 봅시다.
  • 버튼 B가 눌러지면 LED 스크린에 잠자는 모양의 아이콘을 디스플레이 합니다. 아이콘은 스스로 만들어야 합니다.
  • 그리고 micro:bit를 세게 흔들어 깨우면 다마고치가 깨어나서 다시 움직이기 시작합니다.
  • 나머지는 위 프로젝트와 동일하게 코딩해 봅시다.

co:bit Training Kit 기초강좌 3: 가속도센서를 알아보자

가속도 센서를 알아보자.

가속도 센서는 micro:bit를 흔들거나 움직일 때, 가속도를 측정하는 장치입니다. 쉽게 말해서 micro:bit가 움직여지면 그 움직임을 감지할 수 있습니다. 가속도 센서를 이용하면, 여러 가지 비슷한 동작들을 감지할 수 있습니다. 예를 들어, 흔들기, 기울이기, 떨어뜨리기(자유낙하) 등을 감지할 수 있습니다.

micro:bit 보드에서 가속도센서의 위치는 위 그림에서 확인할 수 있습니다. micro:bit의 가속도센서는 3개의 방향으로 움직임을 측정할 수 있습니다. 

위 그림에서 볼 수 있듯이 x, y, z 세가지 방향으로의 움직임을 측정할 수 있습니다. 예를 들어 micro:bit의 LED 스크린을 위로하고 보드를 왼쪽 오른쪽으로 기울이면 가속도센서의 x값의 출력이 변합니다. 가속도센서를 블럭 에디터로 코딩하는 방법은 아래 과제들을 통해 알아봅시다.

준비물

이번 강좌의 준비물은 다음과 같습니다.

  • co:bit training kit 베이스 보드 (micro:bit 장착한 상태)
  • 마이크로 USB 케이블
  • 웹브라우저 연결 가능한 PC (맥북, 리눅스 포함) 혹은 크롬북

하드웨어를 준비해 봅시다.

제일 먼저 co:bit 베이스 보드에 micro:bit를 장착합니다. 장착을 할 때는 micro:bit의 LED와 버튼이 위로가게 장착합니다.

 

그리고 PC와 co:bit 베이스보드를 마이크로 USB 케이블로 연결을 합니다. 그리고 PC에서 웹브라우저를 실행합니다. 웹브라우저는 마이크로소프트의 에지 혹은 익스플로러, 구글의 크롬 등 어떤 브라우저라도 상관 없습니다.

 

그리고 웹브라우저에서 블럭코딩을 하기위해 블럭에디터 사이트로 갑니다. 여기까지 완료했다면 하드웨어 준비가 끝났습니다.

마이크로소프트 블럭에디터 바로가기

 


코딩과제 1: 가속도센서 기울기 감지

과제 개요

micro:bit 보드를 LED 스크린을 위로 한 상태에서 왼쪽, 오른쪽으로 기울일 때, 이러한 움직임들을 감지하는 코드를 만들어 봅시다. 그리고 보드가 기울어 지면 LED 스크린의 이미지가 움직임에 따라 이동하도록 코딩해 봅시다. 코드의 동작은 다음과 같습니다. 

  • 코드가 실행되면 “Smile!”문자열을 스크롤 합니다.
  • 그리고는 “가운데” 이미지가 표시 됩니다.
  • 보드가 왼쪽으로 기울어 지면 LED 스크린에 “왼쪽” 이미지가 0.1초간 표시되고, “도(C)”음이 울립니다. 
  • 그리고 오른쪽으로 기울어 지면 LED스크린에 “오른쪽” 이미지가 0.1초간 표시되고, “솔(G)음이 울립니다. 
  • “왼쪽” 이미지 혹은 “오른쪽” 이미지가 0.1초간 표시된 후에는 다시 “가운데” 이미지가로 돌아옵니다. 

정확히 코딩이 되었다면 아래 동영상처럼 동작을 하게 됩니다. 

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

먼저 “Slope…” 문자열을 LED 스크린에 디스플레이 하고, “가운데” 이미지를 디스플레이 하는 것은 클래스 2에서 많이 다루었으므로 생략합니다. micro:bit 보드가 왼쪽, 오른쪽으로 기울어지는 것을 알아내는 방법은 클래스 2에서 몇번 사용했던 “움직임 감지하면 실행” 블럭을 사용하면 됩니다. “움직임 감지하면 실행” 블럭의 선택사항 중에 “왼쪽 기울임”, “오른쪽 기울임” 두 가지 선택사항이 있습니다. 

 

이 “왼쪽 기울임”, “오른쪽 기울임”은 micro:bit 보드의 x축 방향으로 오른쪽이나 왼쪽으로 기울어졌을 때 반응합니다.

 

즉 위 그림의 “X” 방향을 기준으로 왼쪽이나 오른쪽으로 기울어지면 “움직임 감지하면 실행” 블럭이 실행됩니다. micro:bit 보드가 왼쪽으로 기울었을 때, “왼쪽” 이미지를 LED 스크린에 표시하는 코딩은 다음과 같습니다.

 

“왼쪽” 이미지를 디스플레이 한 다음에는 “도(C)”음을 1박자 동안 출력합니다. 그리고 0.1초간 실행을 멈춥니다. 마지막으로 다시 “가운데” 이미지를 LED 스크린에 디스플레이 합니다. 이렇게 코딩하려면 아래와 같이 합니다.

 

micro:bit 보드가 오른쪽으로 기울어 질 때 동작을 코딩하면 다음과 같습니다.

 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라해보기 

co:bit 베이스 보드를 오른쪽 왼쪽으로 기울일 때 디스플레이 되는 이미지를 변경해 봅시다. 또한 오른쪽 왼쪽으로 기울어지면 출력되는 소리의 종류를 바꾸어 봅시다. 예를 들어 아래 블럭에서 “전원 켜는”, “전원 끄는” 멜로디를 사용해 봅시다. 

 


코딩과제 2: 가속도센서로 위 아래 감지

과제 개요

이번 코딩 프로젝트에서는 micro:bit 보드가 LED 스크린이 위 방향을 바라보는지 아래 방향을 바라보는지를 인식하는 기능을 구현해 봅시다. 코드가 실행되면 다음과 같이 동작하게 만들어 봅시다. 

  • 코드가 실행되면 “Up-bottom”문자열을 스크롤 합니다.
  • 그리고는 LED 스크린에 정수 1이  표시 됩니다. 그리고 “전원켜기” 멜로디가 출력됩니다. 
  • 보드를 뒤집어서 LED 스크린을 바닥을 바라보게 하면 LED 스크린에 정수 2가 표시됩니다. 
  • 그리고 “전원끄기” 멜로디가 출력됩니다. 
  • 보드를 다시 뒤집어서 LED 스크린이 하늘을 보게 하면 LED 스크린에 정수 1이 표시되고 “전원켜기” 멜로디가 출력됩니다. 

정확히 코딩이 되었다면 아래 동영상처럼 동작을 하게 됩니다.

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

먼저 “Up-bottom…” 문자열을 LED 스크린에 디스플레이 하고, 정수 1을 디스플레이 하는 것은 클래스 2에서 많이 다루었으므로 생략합니다. micro:bit 보드의 LED 스크린이 하늘을 바라보고 있는지 땅을 바라보고 있는지 파악하려면  앞의 코딩 프로젝트에서 사용했던 “움직임 감지하면 실행” 블럭을 사용하면 됩니다. “움직임 감지하면 실행” 블럭의 선택사항 중에 “스크린 하늘 방향”, “스크린 땅 방향” 두 가지 선택사항이 있습니다. 

 

micro:bit 블럭 에디터의 소리 블럭 중에는 짧은 소리가 아닌 특정한 멜로디를 출력할 수 있는 블럭이 있습니다. “소리 출력” 블럭인데, 이 블럭은 아래와 같습니다. “소리 출력” 불럭에는 익숙한 결혼식 멜로디, 생일 멜로디 같은 여러가지 멜로디를 지정하여 출력할 수 있습니다.   

 

micro:bit 보드의 LED 스크린이 하늘을 바라볼 때, 정수 1이 디스플레이 되고, “전원켜기” 멜로디가 출력되게 하려면 다음과 같이 하면 됩니다. 

 

LED 스크린이 땅을 바라볼 때, 정수 2가 출력되고, “전원끄기” 멜로디가 출력되게 하려면 다음과 같이 하면 됩니다. 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라해보기

프로젝트에서는  LED 스크린이 하늘 방향, 땅 방향으로 바라볼 때 정수가 출력되고 소리가 나오도록 코딩했습니다. 이번에는 “움직임 감지하면 실행” 블럭에서 “로고 하늘 방향”, “로고 땅 방향”을 사용해 봅시다 . 또한 출력되는 멜로디도 바꾸어 봅시다. 

 

“로고 하늘 방향”과 “로고 땅 방향”은 miro:bit 보드의 Y축 방향으로 위 아래를 가르킵니다. 코딩을 한 후, 실제로 어떻게 보드가 움직임에 따라 반응하는지 알아봅시다. 

 


코딩과제 3: 소리의 템포를 조절하기

프로젝트 개요

이번 코딩 프로젝트에서는 micro:bit 보드를 LED 스크린을 왼쪽과 오른쪽으로 기울 일 때, 기울어지는 정도에 따라 경고음이 다르게 출력되는 코딩을 해 봅시다.  보드가 평평할 때는 경고음이 아주 짧게 출력이 되고 기울임이 점점 더 심해지면 경고음이 기울임에 비례해서 길어지게 코딩하는 것입니다.  

  • 코드가 실행되면 “Slope-tempo” 문자열 출력 
  • 버튼 A를 누르면 경고음이 동작을 합니다. 버튼 B를 누르면 경고음이 동작을 멈춥니다.
  • 보드가 평평하면, 경고음이 최고로 짧게 출력이 됩니다.  
  • 보드가 기울어 지면, 기울기에 비례해서 경고음의 울리는 시간이 점점 길어집니다. 
  • 보드를 오른쪽으로 기울이던, 왼쪽으로 기울이던 동일하게 동작합니다. 

제대로 코딩이 되었다면 아래 동영상처럼 동작을 하게 됩니다.

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

코드가 실행되면 제일 먼저 “Slope-tempo” 문자열을 스크롤 합니다.  그 다음에는 “시작”이라는 이름의 변수를 하나 만들고, 이 변수를 이용해서 on-off 기능을 구현해 봅시다.  micro:bit 블럭 에디터에서 변수를 만드는 방법은 아래 팁을 참고하시기 바랍니다. “시작” 변수를 만들었으면 다음과 같이 코딩합니다.

 

위 블럭을 보면, 버튼 A가 눌러지면 “시작” 변수에 정수 1이 저장 됩니다.  다음에는 버튼 B가 눌러지면 “시작” 변수에 정수 0을 저장합니다.

 

“무한 반복 실행” 블럭에 아래와 같이 코딩합니다.  아래 블럭은 변수 “시작”의 값에 따라 “하트” 아이콘 출력이 on 되기도 하고 off 되기도 합니다. 버튼 A를 눌러서 “시작”  = 1 로 하면 하트 모양 아이콘이 디스플레이 됩니다. 버튼 B를 눌러서 “시작” = 0 으로 하면 하트 모양 아이콘은 디스플레이 되지 않습니다. 한번 micro:bit으로 다운로드해서 실행을 해 봅시다.

 

이제 우리는 변수를 이용해서 소프트웨어적인 on-off 스위치 기능을 구현해 보았습니다.

다음에는 micro:bit 보드의 기울기에 따라 경고음을 출력하는 기능을 코딩해 보겠습니다.  micro:bit 보드가 얼마나 기울어져 있는가를 알 려면 다음 블럭을 사용하면 됩니다. 

 

“가속도 센서 가속도” 블럭은 x축, y축, z축 방향의 가속도센서 값을 출력해 줍니다. 우리는 x축 방향을 사용합니다. 가속도센서의 출력값은 -1024 ~ 1024 사이 입니다.  micro:bit 보드를 완전히 왼쪽으로 기울이면 -1024값이 출력되고, 오른쪽으로 완전히 오른쪽으로 기울이면 1024값이 출력 됩니다.  우선 “기울기”라는 이름의 변수를 새로 만듭니다. 다음에는 아래와 같이 코딩을 해 봅시다. 

 

위 코드는 가속도센서 기울기 값을 읽어서 변수”기울기”에 저장합니다. 당연히 “기울기” 변수는 -1024 ~ 1024 사이의 값입니다. 하지만 우리는 – 값, 즉 음수값은 필요하지 않습니다. 그래서 “기울기” 값의 절대값을 구합니다. 절대값을 구하면 숫자의 – 가 사라집니다. 예를 들면 -1024의 절대값은 1024입니다. -784의 절대값은 784입니다. 절대값을 구하는 블럭은 블럭영역 -> 계산그룹 -> “절대값(abs)” 블럭으로 구할 수 있습니다. 아래와 같이 하면 됩니다.

 

위에서 구한 “기울기”변수의 절대값을 “소리출력” 블럭의 박자 항목에 넣으면 기울기에 따라 경고음이 출력되는 기능이 완성됩니다.

 

이렇게 만든 “소리 출력” 블럭을 이전에 만든 “무한 실행 블럭”안으로 가져 갑니다. 먼저 아까 실험을 위해 넣었던 “하트 아이콘 출력” 블럭은 지웁니다. 완성된 코드는 아래와 같습니다. 

 

위 블럭에서는 변수 “시작” = 1인 경우, micro:bit 보드의 기울기에 맞는 박자로 경고음이 버저에서 출력 됩니다. 

 

팁: micro:bit 블럭 에디터에서 변수 만들기 

이미 스크래치를 공부한 사용자들은 변수(Variables)에 대해서 알고 있을 것입니다. 변수는 숫자, 문자, 문자열을 저장하는 공간입니다. 블럭 에디터에서 변수를 만들려면 블럭 영역에서 변수 그룹을 클릭하면 됩니다. 

 

변수 그룹을 클릭하면 위 그림의 오른쪽 같은 화면이 나옵니다. 여기서 위쪽에 보면 “변수 만들기” 버튼이 있습니다. 이것을 클릭하면 변수의 이름을 물어보는 팝업창이 뜹니다. 

여기에 변수이름을 입력하고 “확인”을 클릭하면 새로운 변수가 생성됩니다. 예를 들어 변수이름을 “밥”이라는 입력합니다.  그리고 “확인”을 클릭하면 “밥”이라는 변수가 생긴 것을 확인 할 수 있습니다. 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라해보기

프로젝트에서는 가속도센서 값의 절대값을그대로 소리출력의 박자로 사용했는데 이번에는 이 가속도센서 값의 2배값을 소리출력의 박자로 사용해서 코딩해 봅시다. 즉 박자를 2배 늘려 봅시다. 아래 블럭이 힌트 입니다. 

 


코딩과제 4: 점프 카운터 만들기

과제 개요

이번 코딩 프로젝트에서는 손목에 착용하고 줄넘기를 하면, 줄넘기 숫자가 카운팅 되는 점프 카운터를 만들어 보겠습니다. 손목에 착용할 수 있도록 co:bit Training Kit에 포함된 공작용 종이 중에서 “점프 카운터 프레임”이라는 이름이 붙여진 공작용 종이를 준비합니다. 조립을 위해서는 가위와 실리콘건 또는 풀이 필요하니 같이 준비합니다. 점프 카운터 프레임을 조립하는 방법은 아래 동영상을 보면 됩니다.

<점프 카운터 프레임 조립 동영상>

공작용 종이가 준비되었으면 하드웨어를 준비합니다. 먼저  micro:bit를 co:bit 베이스 보드에서 빼냅니다. 그리고 co:bit Training Kit에 포함되어 있는 배터리팩을 micro:bit에 연결을 합니다. 연결하는 방법은 아래 사진에 나와 있습니다. 

 

배터리팩이 연결되면 PC와 micro:bit를 USB로 연결합니다. 연결한 후에는 다음과 같이 코드를 만들 것입니다.

  • 코드가 실행되면 “Count jump” 문자열을 스크롤 합니다. 스크롤이 끝나면 LED 스크린에 “하트” 아이콘을 출력합니다. 
  • 흔들림이 감지되면 변수 “점프”를 1씩 증가 시킵니다.
  • 사용자가 버튼 A를 누르면 변수 “점프” 숫자가 LED 스크린에 0.1초간 출력됩니다.
  • 사용자가 버튼 B를 누르면 변수 “점프”가 0으로 만들고 LED 스크린애 0.1초간 출력됩니다.    

코딩이 완료되면 공작용 종이로 만든 점프 카운터 프레임 안에 micro:bit와 배터리팩을 집어넣고, 손목에 착용합니다. 이제 micro:bit를 리셋하고 실제로 줄넘기를 해 봅니다. 줄넘기를 20번 정도 했으면 줄넘기를 멈추고 micro:bit의 버튼 A를 누릅니다. 그러면 카운팅 된 점프의 숫자가 LED 스크린에 표시됩니다. 점프 숫자를 확인했으면 버튼 B를 눌러서 변수 “점프”를 0으로 만듭니다. 다만 micro:bit보드의 가속도센서가 조금 둔감해서 실제 점프 횟수보다는 적게 카운팅이 됩니다.  점프 카운터 프레임 착용하는 방법과 코드가 동작하는 방법은 아래 동영상을 보면 됩니다.

 

블럭코딩의 흐름도

프로젝트를 코딩하기 위해서 먼저 블럭코드의 흐름도를 봅시다.

 

블럭코딩 하기

코드가 실행이 되면 제일 먼저 “Jump count” 문자열을 스크롤 하고. 이어서 “하트” 아이콘을 출력해야 합니다. 이것을 실행하는 코드는 아래와 같습니다. 

 이 코드는 흐름도에서 아래의 부분에 해당하는 코드입니다. 

 

다음에는 움직임이 감지되면  변수 “점프”를 1 증가시키는 코드를 만들어 봅시다. 변수 “점프”를 만들어야 합니다. 변수를 만드는 방법은 코딩 프로젝트 3의 팁을 보시면 됩니다. 움직임을 감지하는 블럭은 이미 많이 사용해본 “움직임이 감지하면 실행” 블럭 입니다.

 

움직임이 감지되면 변수 “점프”를 1 증가시키고 0.1초 쉬는 코드는 아래와 같이 만들면 됩니다.

 

이 코드는 흐름도에서 아래의 부분을 코딩한 것입니다.

 

끝으로 버튼 A 또는 B가 눌러졌을 때 동작하는 코드를 만들어 봅시다. 버튼 A가 눌러지면 변수 “점프”에 저장된 숫자를 LED 스크린에 출력하는 코드와 버튼 B가 눌러지면 변수 “점프”가 0이 되도록 코딩하면 됩니다. 먼저 이 코드는 모두 “무한 반복 실행” 블럭 안에 넣어야 합니다. 이번에는 “버튼 ~ 가 눌러지면” 블럭을 사용하지 않을 것입니다.  먼저 흐름도를 봅시다.

 

이 흐름도를 보면 제일 먼저 버튼 A가 눌러졌는지 체크한 다음에 눌러지지 않았으면 버튼 B가 눌러졌는지 체크하게 되어 있습니다. 이것을 수행하는 블럭은 아래 블럭입니다.

 

블럭영역의 논리 블럭에서 “만약 ~ 이면 실행” 블럭을 가져와서 아래와 같이 하면 위 블럭을 만들 수 있습니다.

다음으로 버튼이 눌러졌는지 체크하는 블럭은 다음 블럭을 사용합니다.

 

그 다음에는 버튼 A가 눌러졌을 때 실행될 블럭들과 버튼 B가 눌러졌을 때 실행될 블럭들을 if문 블록에 넣으면 됩니다. 아래 블럭과 같이 코딩하면 됩니다. 

 

위 블럭을 보면 버튼 A가 눌러지면 “점프” 변수의 저장된 숫자를 LED 스크린에 출력하고 0.1초 쉬고 if문을 빠져나옵니다. 만약 버튼 A는 눌러지지 않고 B가 눌러졌으면 “점프” 변수에 0을 저장하고 이 값을 역시 LED 스크린에 출력, 0.1초 쉬고 if문을 빠져 나옵니다. 흐름도를 마지막을 보면 if문을 빠져나왔으면 “하트” 아이콘을 출력하면 코드가 끝이 납니다. 

전체 프로젝트

전체 블럭 프로젝트는 아래와 같습니다. 맨 오른쪽 위 모서리에 있는 ‘편집’ 버튼을 클릭하면 자신의 컴퓨터로 전체 블럭 프로젝트가 임포트 됩니다.

따라하기
점프가 감지되면 LED 스크린에 점프 카운트 숫자가 바로 표시되도록 코딩을 해 봅시다. 점프 카운트를 LED스크린에 표시하려면 다음 블럭을 사용합니다. 
이 블럭을 흐름도에서 다음 위치에 적절히 넣으면 점프가 감지 돌 때, 바로 점프카운트가  LED 스크린에 표시됩니다. 

응용하기

점프카운터를 응용해서 만보기를 만들어 봅시다. 코드는 특별히 변경할 것은 없고 내가 걸은 걸음 숫자를 버튼을 눌러서 확인할 수 있도록 코딩해 봅시다. 그리고 만보기를 손목이 아닌 허리에 착용할 수 있도록 종이로 케이스를 만들어 봅시다.