티스토리 뷰

키보드로 모터 움직이기

다른 방법으로 모터의 회전 속도와 방향을 바꾸는 방법은 없을까요? 이번에는 키보드의 화살표 키와 스페이스 키를 이용해서 속도와 방향을 바꿔보겠습니다. 그림 2-40은 1편에서 게임을 만들 때 코딩한 것입니다.

그림 2-40 화살표 키로 움직이기

 

이것을 보고 잘 생각하여 코딩을 해봅시다. 우리가 코딩하고 싶은 것을 순서대로 썼습니다.

 

회전 속도를 바꾸는 것은 감이 오는데 회전 방향은 어떻게 바꾸면 될까요? 변수를 사용하면 문제를 멋지게 해결할 수 있습니다. 우선 그림 2-41처럼 위쪽 화살표 키를 누르면 회전 속도가 점점 빨라지도록 코딩을 해보겠습니다.

그림 2-41 위쪽 화살표키로 모터를 점점 빠르게 회전시키기

 

그림 2-42와 같이 프로그램을 업로딩하고 잘 살펴봅시다. 위쪽 화살표 키를 누르면 속도가 점점 빨라집니다. 그리고 곰돌이는 (속도는 : 회전 <변수의 값>)이라고 말합니다. 결합하기 명령어 블록은 글자를 서로 합쳐줍니다.

그림 2-42 결합하기 블록을 사용하기

 

하지만 PWM 디지털 핀에 255까지의 값만 보낼 수 있습니다. 255보다 크면 최고 속도로 회전합니다. 어떻게 코딩하면 될까요? <만약 ~ 블록> 안에 다시 <만약 ~ 블록>을 넣으면 문제를 멋지게 해결할 수 있습니다. <그림 2-43>

그림 2-43 회전 변수 값이 255보다 클 경우 모터를 255의 값으로 회전하기

 

다음으로 아래쪽 화살표 키를 누르면 회전 속도가 점점 느려지게 코딩을 해보겠습니다. 그림 2-44처럼 코딩하고 아래쪽 화살표 키를 누르면 점점 회전하는 속도가 느려집니다. 최고 속도에서 점점 느려져야 하므로 회전 변수에 255 값을 저장했습니다.

그림 2-44 아래쪽 화살표 키로 모터를 점점 느리게 회전시키기
그림 2-45 결합하기 블록을 사용하기

 

마찬가지로 회전 변수가 0보다 작을 수 없습니다. 앞에서 코딩한 것을 반대로 생각하여 문제를 해결해보겠습니다. <그림 2-46>

그림 2-46 회전 변수 값이 0보다 작은 경우 모터를 멈추기

 

어때요, 참 쉽죠? 그리고 그림 2-47처럼 두 가지 프로그램을 합쳐서 실행해 보겠습니다.

 

아~ 코딩이 너무 길지 않나요? 한눈에 들어오지 않아 이해하기가 너무 힘듭니다. 어떻게 하면 코딩을 깔끔하게 할 수 있을까요? 바로 함수입니다. <그림2-48>

그림 2-48 함수 사용

 

어때요? 엄청 깔끔하고 이해하기 쉽지 않나요? 이제 마지막으로 스페이스 키를 누르면 모터의 회전 방향을 바꾸도록 코딩을 해보겠습니다.

 

이 부분을 잘 해결한다면 여러분의 코딩 실력은 더욱 성장하게 될 것입니다. 여러분 스위치 아시죠? 스위치를 눌러서 회전방향을 바꾼다고 생각하면 쉽습니다.

 

그럼 스크래치에서 어떻게 스위치를 만들까요? 바로 변수입니다. 회전 방향 변수를 만들어서 스위치처럼 사용해봅시다. 스위치는 두 가지 값을 갖습니다. <켜진다-꺼진다>와 같이 말이죠. [회전 방향] 변수가 두 가지 값을 갖고 스페이스키를 눌렀을 때 값이 바뀌면 되지 않을까요?

 

우리가 생각하는 것을 순서대로 써봅시다.

 

그럼 회전 방향의 변수가 0과 1 값만 갖도록 코딩을 해보겠습니다. 자세히 보면 조건 안에 조건이 있다는 것을 알 수 있습니다. 이 모양을 잘 생각하면서 그림 2-49처럼 코딩을 해봅시다.

그림 2-49 스페이스 키로 회전 방향 변수 값 바꾸기

 

어때요? 참 쉽죠? 회전 방향 변수를 사용해서 남은 문제도 멋지게 해결해봅시다. 우리가 원하는 프로그램을 잘 분석하면 조건 안에 조건이 있다는 것을 알 수 있습니다. <위쪽 화살표 키를 눌렀을 때>의 조건 안에 <회전 방향 변수 값이 0일 때>의 조건이 있는 것입니다.

그림 2-50 조건 블럭안에 조건 블럭 넣기

 

1의 경우 그림 2-51처럼 코딩합니다.

그림 2-51 시계방향으로 회전하기

 

2의 경우일 때는 그림 2-52처럼 코딩합니다. 1의 경우일 때 만든 코딩을 복사해서 몇 개만 바꾸면 쉽게 코딩할 수 있습니다.

그림 2-52 시계반대방향으로 회전하기

 

그리고 이것을 그림 2-53처럼 합치면 됩니다.

그림 2-53 회전방향 변수 값에 따라서 바뀌는 모터의 회전방향

 

그림 2-54처럼 회전 변수는 0으로 정하고 회전 방향 변수는 0으로 정합니다. 그리고 점점 빨리 회전 함수만 연결하고 프로그램을 실행해봅니다.

그림 2-54 함수를 이용하여 코딩하기

 

위쪽 화살표 키를 누르다가 스페이스 키를 누릅니다. 그러면 회전 방향 변수 값이 1이 됩니다. 그리고 다시 위쪽 화살표 키를 누르면 반대로 회전합니다.

그림 2-55 스페이스 키로 회전방향 바꾸기

 

아래쪽 화살표 키를 누르는 경우도 코딩을 합니다.

그림 2-56 <점점 느리게 회전> 함수

 

회전 방향을 바꾸는 것도 함수로 만들어서 코딩합니다.

그림 2-57 <회전방향 바꾸기> 함수

 

회전 방향 변수는 회전 변수와 함께 코딩하겠습니다. 그래야 어떤 변수를 사용했는지 한 눈에 확인할 수 있어서 좋습니다.

그림 2-58 함수를 이용한 코딩 완성하기

 

함수를 사용하면 이렇게 깔끔하게 코딩을 할 수 있습니다. 코딩할 때는 먼저 해야 할 일을 나눕니다. 문제를 분석하는 거죠. 그리고 문제를 하나씩 해결합니다. 이렇게 해결한 것을 함수로 만들면 됩니다.

 

함수를 사용하면 이해하기 쉽고 필요할 때 그 함수를 쓰면 되니까 편하게 코딩을 할 수 있습니다. 이해가 안 된 부분은 반복해서 읽어서 배운 내용을 여러분의 머리와 마음속에 보물처럼 간직하길 바랍니다.

댓글
댓글쓰기 폼