티스토리 뷰

모터 속도 바꾸기

이제 곰돌이와 이야기를 주고받으면서 모터의 회전속도를 바꿔보는 프로그램을 만들어 보겠습니다. 그림 2-26과 같이 코딩하겠습니다.

그림 2-26 묻고 기다리기

 

<관찰> 블록 모음을 클릭해서 그림 2-27의 블록을 사용하면 됩니다.

그림 2-27 묻고 기다리기 블록

 

그림 2-28처럼 대답을 체크하고 프로그램을 실행해 보겠습니다.

그림 2-28 얼마나 빨리 회전할까요?

 

그러면 곰돌이가 이렇게 말합니다. 100을 쓰고 체크 표시를 클릭합니다. 그러면 [대답] 값이 100이 됩니다. 무엇이랑 비슷하지 않나요? 대답은 변수와 같습니다. 우리가 100이라는 대답을 하면 [대답] 변수에 100 값이 저장됩니다. <그림 2-29>

그림 2-29 [대답] 변수 값에 100을 저장

 

그래서 그림 2-30처럼 코딩을 하면 우리가 대답한 값만큼 모터가 시계 방향으로 회전하게 됩니다. 참 신기하죠?

그림 2-30 [대답] 변숫값만큼 회전하기

 

그런데 PWM 핀으로 0부터 255까지의 값만 보낼 수 있습니다. 이럴 때는 조건을 사용하면 됩니다. 우선 그림 2-31과 같이 대답한 값이 255보다 크면 곰돌이가 크다고 말하도록 코딩을 하겠습니다.

그림 2-31 대답이 255보다 크면 너무 값이 크다고 말하기

 

이렇게 하면 될까요? 프로그램을 실행하고 256이라고 대답해 봅시다. 그러면 <너무 값이 큽니다.>라고 말하자마자 다시 <얼마나 빨리 회전할까요?>를 묻고 기다립니다. 그리고 모터가 회전을 합니다. 어떻게 하면 될까요?

 

그림 2-32처럼 코딩하면 문제를 해결할 수 있습니다. <만약 ~아니면> 블록과 <기다리기>블록을 사용합니다.

그림 2-32 값이 너무 크면 모터를 움직이지 않기

 

대답한 값이 255보다 크면 너무 값이 크다고 말하고 1초를 다립니다. 그리고 PWM 디지털 5, 6번 모두에게 전압을 주지 않아서 모터를 멈추게 합니다. 만약 대답한 값이 0보다 작으면 어떻게 할까요? 너무 작다고 말하면 되겠죠? <그림 2-33>

 

모두 3가지 경우가 있습니다. 대답이 255보다 큰 경우, 대답이 0보다 작은 경우, 대답이 0과 255 사이인 경우입니다.

 

만약 1번 경우가 아니면 2번과 3번 경우입니다. 이 중에서 2번 경우가 아니면 3번 경우입니다. 이렇게 <만약 ~아니면> 블록을 사용하면 경우에 따라서 다른 일을 할 수 있습니다.

그림 2-33 [대답] 변숫값에 따라서 회전하는 모터

 

아니면 그림 2-34처럼 <만약~라면> 블록을 이용해서 코딩을 해도 됩니다. 이제 조건을 잘 생각해서 코딩을 할 수 있겠죠?

그림 2-34 <만약~라면> 블록을 이용하여 코딩하기

 

그리고 다음과 같은 프로그램을 만들어 보겠습니다. 모터가 점점 빨리 회전하다가 최고 속력이 되면 엘이디가 깜빡입니다. 그리고 모터가 반대 방향으로 점점 느리게 회전하는 것을 반복하도록 코딩을 하겠습니다. 순서대로 써볼까요?

 

우선 속도가 점점 빨라지는 것부터 코딩을 해보겠습니다. 한 번에 한 가지 문제만 집중해서 해결한다는 것! 꼭 기억해 주세요. 그림 2-35처럼 코딩하면 [회전] 변수가 1씩 커져서 모터가 점점 빨리 회전합니다. 그러다가 [회전] 변숫값이 255보다 커지면 모터가 멈춥니다.

그림 2-35 점점 빨리 회전하는 모터

 

그리고 아두이노 보드에 있는 엘이디를 깜빡입니다. 아두이노 보드에 있는 엘이디(LED)는 디지털 13번 핀과 연결되어 있습니다.

그림 2-36 아두이노 엘이디(LED) 깜빡이기
그림 2-37 회전을 멈추고 아두이노 엘이디(LED) 깜빡이기

 

그리고 점점 천천히 반대 방향으로 회전하도록 만들겠습니다.

그림 2-38 점점 느리게 회전하는 모터

 

이제 무엇을 하면 되죠? 그렇죠, 그림 2-39처럼 프로그램을 서로 연결하면 됩니다. [회전] 변수 값은 0에서 255, 255에서 다시 0으로 반복합니다. 반복적으로 커졌다가 작아집니다. 따라서 처음에만 [회전] 변숫값을 0으로 정하면 됩니다.

그림 2-39 점점 빨라지다가 느려지는 모터

 

문제를 멋지게 해결했나요? 혹시나 생각한 대로 안 되면 우선 회로를 잘 보고 코딩한 것을 차근차근 살펴보길 바랍니다.

댓글
댓글쓰기 폼