brunch

You can make anything
by writing

C.S.Lewis

by 첨물 Jun 24. 2017

마이크로 비트로 모터 돌리기

마이크로비트, 스크래치와 만나다...

6월 모임은 조촐하게 세명의 아빠가 모였다.

아빠들이 토요일 아침, '코딩'이라는 건전한 주제로 모였다.


먼저 최근의 마이크로비트 싸이트의 변화에 대해 이야기하였다.

어린이 코딩 언어 중 가장 많이 사용하고 있는 스크래치가 드디어 마이크로비트와 만났다.

아직은 맥북에서만 작동되지만 머지않아 윈도우에서도 가능할 것 같다.

피지컬 컴퓨팅으로는 마이크로비트가 매우 우수하지만 게임 등을 익히기에는 스크래치가 아이들에게 접근성이 우수하다. 그런데 그 둘이 만났으니 어떤 모습으로 진화할지 기대가 커진다.

특히 아직까지 마이크로비트 블록 에디터 언어에 한글이 포함되어 있지 않은데, 스크래치는 한글판이 있으므로 우리나라 학생들에게 좀 더 친숙하게 다가올 것으로 생각했다.





오늘은 이 책임이 마이크로비트를 이용하여 모터를 돌리는 코딩을 같이 해 보았다.

마이크로비트에서 3V DC 전압이 나오는데, 3V를 0~1023 등분하여 나누어 출력하게 만들 수 있기 때문에 이를 조정하면 모터의 회전을 조절할 수 있다.


이론적으로 코딩을 아래와 같이 작성할 경우, A 버튼을 누르면 3V가, B 버튼을 누르면 3* (1023-200)/1023=2.4V 가 인가가 되도록 했다.

그러나 실제로 해 보니 B 버튼을 눌렀을 때는 모터는 미세한 떨림은 있었지만 프로펠러는 돌지 않았다. 일종의 마찰력에 의한 문턱전압이 있는 것 같았다. 아니면 테이프로 붙인 전극부에 접촉 저항이 높아서 2.4V가 아닌 그보다 작은 전압이 인가되었기 때문일 수도 있다.

어찌 되었든 단순하지만 실제 코딩을 해 보고, 프로펠러를 돌려보는 예제는 초등학교 수준에서는 충분이 한 예제로 사용할만한 내용이었다. 또한  변수 사용 및 아날로그 전압이 출력되는 과정을 설명해준다면 전기라는 막연한 힘을 조절 가능하다는 것을 보여줄 수 있을 것이란 생각이 들었다.



다음은 본격적으로 스크래치 강의가 있었다. 가장 열정적으로 스크래치 언어를 이용하여 게임을 만들어보고 있고, 초등학교, 중학교 아이들과 실제 같이 실습도 하고 있는 태 책임의 강의였다.

주제는 '공던지기'

엄밀히 말하면 중력에 의해 하늘로 던진 공이 포물선 운동을 하면서 나아가는 모습을 구현하는 것인데, 수직방향으로는 속도가 점점 증가했다가 감소하는 것을 어떻게 만드느냐가 핵심이다.


일단 코딩의 기초 뼈대는

1. 초기 조건을 변수에 지정하여 넣는다.

2. 무한 반복문을 만들어 프로그램이 항상 실행하도록 한다.

3. 무한 반복문 안에 조건문을 넣고 변수의 한계 내에서 작동하도록 한다.

4. 조건이 만족되었을 때는 좌표가 변화하도록 한다.


우선 만들어진 동영상을 보면 아래와 같다.



그러면 포물선을 그리며 공이 움직이는 것을 어떻게 표현할까?

스프라이트(객체)는 고양이와 공을 만든다.


1. 고양이 코딩

 - 고양이 초기 조건 세팅 (크기, 초기 방향, 위치)

 - 무한 반복문

 - 조건문 (위쪽 또는 아래쪽 화살표가 눌렸을 경우) 회전하라



일단 여기까지는 따라 할 만하다.

다음은 공..


2. 공 코딩

 - 초기 조건 (변수 4개를 설정한다. X좌표, Y좌표, 세기, 중력)

 - 무한 반복문

 - 공은 항상 고양이 위치로 이동해서 고양이 뒤에 숨겨놓는다.

 - 조건문 (스페이서를 눌렀는가? 눌려있으면 세기 변수를 증가시킨다. 한계점은 30)

 - 조건문 (스페이서가 눌리지 않았는가? 스페이서를 손에서 떼면 X, Y 좌표 변경)

 


여기서 가장 까다로운 것은 X, Y 좌표이다.

특히 Y 좌표는 점점 증가했다가 감소해야 한다.

어떻게 구현했을까?

태 책임은 여러 고민 끝에 결국 삼각함수를 사용했다고 한다. 초등학생은 좀 어려울 수 있지만 중학생 수준이라면 해 볼 수 있도록...

스페이서를 누른 시간에 따라 세기가 증가하고 그 값에 싸인과 코싸인을 취한다. 그러면 Y는 코싸인, X는 싸인을 취한 값이다. 여기서 위쪽 방향이 0도이고 오른쪽 방향이 90도라는 스크래치 좌표축을 염두애 두어야 한다.

핵심은 중력값을 스페이서가 손에서 떨어지는 순간부터 또 하나의 반복문을 두어 공이 벽에 닿을 때까지 중력 변숫값을 -1씩 감소하면서 X, Y 값을 변화시킨다는 것이다. Y값은 세기 값에 코싸인을 취하고 시간에 따라  점점 -1씩 감소하는 중력값을 더해나가면 전체적으로 증가했다가 감소하는 경향을 가지게 된다.




끝으로 마무리하면서 어떻게 코딩을 가르쳐야 하는가에 대 논의하였다. 태 책임이 처음 공의 포물선 운동을 코딩하고 싶다고 주제를 정한 이후에 어떤 과정이 있었는가를 물었다. 가장 어려웠던 점은 초등학생들도 이해할만한 쉽게 코딩하면서도, 공이 가장 자연스럽게 움직이게 할 수 있을까 하는 것이었다고 한다. 결국엔 삼각함수를 사용하였고 초등학생들이 할 수 있는 보다 쉬운 방법은 찾지 못했다고 하면서...

그러면 이와 같은 과정으로 예제를 만들었는데, 가르칠 때는 어떻게 하는 것이 좋을까를 이야기했을 때, 처음 코딩의 골격을 알려주고, 주제를 준다. 그리고 스스로 이리저리 고민하는 시간을 갖도록 하는 것이 중요하고 그 과정을 통해 스스로 많이 성장하는 것이 코딩 교육의 핵심이라 생각한다고 말했다. 물론 현실에 적용할 경우, 태 책임이 했던 과정으로 학생들이 코딩하기는 쉽지 않을 것이란 이야기도 했다. 수학 문제 풀듯이 원리를 설명하고 간단한 예제를 몇 개 풀어보면서 그 원리를 한층 더 이해하고, 그 후에  어려운 과제를 예제와 같은 로직으로 풀어나가는 것이 보다 쉬울 것 같다는 얘기도 나누었다.






매거진의 이전글 R을 이용한 인공지능 테스트해보기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari