카테고리 없음

초등학교 코딩교육 스크래치 조이스틱 사용방법

abc0123 2017. 10. 24. 12:24
반응형

 

지난 글에서는 스크래치 프로그램에서 LED를 켜는 방법을 알아봤는데 이번에는 반대로 조이스틱을 움직여 모니터 화면에 떠 있는 스크래치의 캐릭터를 움직이는 예제를 만들어보면서 게임의 캐릭터 제어의 기본 개념을 습득해보자. 즉, 지난 글과 반대의 개념인데 스크래치에서 LED를 제어하는 방법은 아래 글을 참고해보기로 하고...

 

스크래치

 

이번 예제에서는 스크래치 프로그램에 캐릭터 스프라이트를 추가 한 후 조이스틱을 아두이노에 연결해서 캐릭터를 제어하는 과정을 정리해보자. (초보가 공부하면서 생각한 대로 블록을 끼워 넣어서 만들어보는 프로그램이라서 엉망이니 혹시 이 글을 보시는 분들이 있다면 감안 부탁드립니다.)

 

 

스프라이트 추가

 

▲ 이번에도 역시 스크래치에서 제공해주는 스프라이트를 사용하기 위해서 추가해본다.

 

Avery Walking

 

▲ 어떤 걸 사용해볼까 하다가 [Avery Waling]이라는 스프라이트가 움직임을 표현하기에는 좋을 거 같아서 선택을 했다.

 

모양

 

▲ 그리고 그 [모양]을 보니 네 개의 그림이 연속으로 이어져 있어서 꽤 부드럽게 움직임을 묘사해줄 거 같다. 다음은 이 녀석을 제어할 아두이노와 조이스틱을 준비하자.

 

아두이노 준비

 

▲ 조이스틱의 핀에 표시된 X, Y, VCC, GND을 각각 아두이노의 아날로그 핀 0(X), 1(Y) 그리고 5V와 GND에 연결해서 준비를 했다. 이제 스크래치에서 코딩을 해보자.

 

블록 쌓기

 

▲ 먼저 캐릭터가 너무 커서... 녹색 깃발을 클릭함과 동시에 그 크기를 40% 줄이고 초기 시작 위치를 정 중앙으로 하기 위해서 좌표 (0, 0)으로 이동하기를 설정한 후 깃발을 클릭해봤다.

 

 

이제 이 녀석을 어떻게 움직일까? 고민을 해보는데.... 먼저 조이스틱의 X, Y 아날로그 값을 받아서 화면에 표시를 해보자. 그 값들이 얼마인지 알아야 상황에 따라서 움직임의 방향을 결정지을 수 있기 때문이다.

 

조이스틱의 값

 

▲ [데이터]의 [변수 만들기] 버튼을 눌러서 각각 그 이름을 조이스틱 X, Y 값으로 하고 화면에 표시가 되도록 체크를 했다. 이제 아날로그 0번과 1번 핀에서 들어오는 값을 여기에 표시되도록 해보자.

 

 

▲ 영상에서 확인할 수 있듯이 조이스틱을 최대한 좌, 우, 위, 아래로 움직일 때마다 0에서 100까지의 아날로그 값이 들어온다. 아두이노 아날로그 값은 0~1023의 값이 들어오는 걸로 알고 있었는데 스크래치는 변환돼서 값이 입력되나? 초보라서 이 부분의 정의를 정확히 못 내리겠다. ㅎㅎ 여하튼 이건 좀 더 알아보기로 하고... 여기서는 X좌표만을 이용해서 캐릭터가 좌우로 움직이도록 해보자.

 

50을 기준으로 그 이하면 왼쪽으로 움직이고 그 이상이면 오른쪽으로 움직이도록 하면 될 거 같은데 50 전후의 값을 이용하면 너무 민감하게 반응할 거 같으니 그 값이 15이하(조이스틱 왼쪽으로 최대한 움직였을 때)이면 캐릭터가 왼쪽으로 85이상(오른 쪽으로 최대한 움직임)이면 오른쪽으로 움직이도록 코딩을 해보자.

 

만약에

 

▲ 그 값이 15이하이면 왼쪽으로 움직이도록 하기 위해서 [만약~라면] 블록을 넣었고 그 조건에는 X의 값이 15이하 일 때를 넣기 위해서 '<' 연산자를 추가해보자.

 

조건 넣기

 

▲ 만약 아날로그 0번 핀, 즉 x의 값이 15이하면... 이라는 조건을 만들었다. 이제 그때 실행될 내용을 넣어보자.

 

방향과 이동

 

▲ 먼저 왼쪽을 보게 하기 위해서 [-90도 방향 보기] 넣었고 그 방향, 즉 왼쪽으로 X 값을 2만큼 움직이도록 했다. 그리고 좌우로만 움직이도록 하기 위해서 회전 방식을 그림에서 표시한 대로 양쪽 화살표 방향으로 바꿔줬다. 이걸 변경해주지 않으면 캐릭터가 뒤집히는 현상이 일어난다.

 

 

다음은 반대 방향인 오른쪽으로 움직이도록 하기 위해서 그 조건과 실행되는 내용을 추가해보자.

 

반대 방향

 

▲ 바로 위에 있던 만약에~ 아래쪽 블록을 복사해서 넣고 조건을 85보다 크게 했으며 반대 방향을 바라보도록 [90도 보기]를 추가했다. 그리고 그 방향으로 2씩 움직이도록 했는데 프로그램을 실행해보자.

 

 

▲ 일단은 이렇게 조이스틱의 방향에 따라서 캐릭터가 좌우로 움직인다. 그런데 이 스프라이트는 연속 이미지로 만들어져 있기 때문에 걷는 모습도 연출할 수 있을 것이다. 그 과정을 진행해보자.

 

다음 모양으로 바꾸기

 

▲ 이건 간단하다. 형태의 [다음 모양으로 바꾸기] 블록을 끼워 넣기만 하면 되는데..... 어떻게 움직이는지 다시 실행을 해보자.

 

 

▲ 이제는 제법 애니메이션이나 게임의 캐릭터처럼 움직인다. 그런데 다음 모양으로 바뀌는 순간이 너무 빨라서 발이 너무 빠르게 움직인다. 이걸 좀 더 현실적으로 바꾸기 위해서 약간의 시간을 사이에 넣어본다.

 

시간 추가

 

▲ 제어에서 1초 기다리기 블록을 끼워 넣은 후에 그 시간을 0.1초로 설정을 했는데 어떻게 변경됐는지 영상으로 확인해보자.

 

 

▲ 제법 그럴싸하게 현실감 있어 보인다. ㅎㅎ

 

이렇게 해서 스크래치의 캐릭터를 조이스틱을 이용해서 제어를 해봤는데 앞에서도 잠깐 언급했듯이 혼자 생각한 대로 블록을 끼워 맞추면서 만들어보는 거라 고수님들이 보기에는 엉망인 프로그램이겠지만 이러면서 하나씩 습득해가는 게 아니겠는가?ㅎ 여하튼 하나씩 만들어보는 재미가 괜찮다. 초등학생 등 어린 친구들도 하나씩 만들어보면 재미를 느낄듯싶다. 다음은 어떤 기초를 닦아볼까??

반응형