카테고리 없음

초등코딩 ScratchX 서보모터 움직이기

abc0123 2017. 10. 24. 16:01
반응형

 

이번 예제에서는 스크래치X 프로그램으로 아두이노에 연결된 서보모터를 제어하는 코딩을 해보려고 한다. 서보 모터란... 전원을 열결 하면 계속 돌아가는 일반 모터와 달리 내가 원하는 각도만큼만 움직이게 제어할 수 있는 녀석인데 움직이는 로보트의 관절 등에서 많이 사용된다.

 

이번 예제 역시 이해하기 쉽도록 로보트 머리의 방향이 조이스틱의 방향에 따라서 위, 아래, 좌, 우로 움직인다고 생각하면서 보면 도움이 좀 될 것이다. 즉, 아래 영상과 같이 제어하는 프로그램을 만들어보자는 것이다.

 

 

▲ 조금 어이가 없을 수도 있지만...ㅎㅎ 그냥 저 위에 머리가 달려있다고 가정하고 영상처럼 조이스틱의 방향대로 앞, 뒤, 좌, 우로 움직이게 할 수 있다는 걸 이해하자는 것이다.

 

 

일단 아두이노와 조이스틱 그리고 서보모터의 연결 회로부터 살펴보자면...

 

회로

 

▲ 좀 복잡하게 보일 수도 있겠다. 하지만 그 원리만 알면 간단한데... 혹시 이 글을 보는 사람들 중 나 같은 초보님들이 있다면 이 블로그의 이 전 글들을 몇 개 참고해야 할 수도 있다.

 

조이스틱

 

▲ 먼저 조이스틱의 아날로그 신호를 받기 위해서 바로 앞글에서 정리했던 것처럼 아두이노 아날로그 0번, 1번 핀에서 각각 조이스틱의 X와 Y의 값을 받아들이도록 연결을 했다.

 

조이스틱

 

서보모터

 

▲ 그리고 디지털 핀 8번과 9번에서 각각의 서보모터로 신호를 보내도록 했다.

 

서보모터

 

MG995

 

즉, 아날로그 0번과 1번에서 조이스틱의 가로, 세로 방향의 값을 받아들여서 8번 9번 디지털 핀을 이용해서 서보모터로 전달을 해서 그것들이 움직이도록 하는 내용이다.

 

 

이제 스크래치X 프로그램에서 이것들을 컨트롤하는 코딩을 해보자.

 

변수 선언과 초기화

 

▲ 먼저 조이스틱의 값을 받아와서 출력하도록 저장할 변수 [조이스틱 X 값, Y 값] 두 개를 만들고 화면에 보이도록 체크를 했다. 그리고 아두이노가 연결됐을 때 서보모터 두 개를 각각 8번과 9번 핀에 할당했으며 그것들의 기본 위치가 가운데로 향하게 하기 위해서 90도로 기본 회전을 시켰다.

 

변수값 할당

 

▲ 다음으로 아날로그 0번 핀과 1번 핀에서 받은 각각의 값을 변수에 대입을 시켰으며... 이제 조이스틱을 움직일 때마다 그 값을 받아서 앞에서 만든 변수들에게 저장을 하게 된다.

 

IF문

 

▲ 그렇게 받은 X의 값이 만약에 15보타 작다면 서보모터를 -2 즉, 왼쪽으로 2씩 움직이도록 했으며 조이스틱 조작 중에 혹시 들어오게 될 Y 값의 영향으로 위쪽의 모터가 움직이는 걸 방지하기 위해서 그 값을 50으로 고정을 시켰다. 물론 두 개가 동시에 움직이도록 할 생각이라면 이 고정 값은 필요가 없을 듯 싶다.

 

 

이제 반대로 조이스틱을 오른쪽으로 움직였을 때 즉, 그 값이 85 이상일 때는 위 상황과 반대로 움직이도록 추가해보자.

 

좌우로 움직이기

 

이 블로그는 초보가 스크래치X 프로그램 공부하면서 정리하는 곳이고 앞에서 언급했던 바로 앞글에서 이 내용을 이미 정리했기 때문에 왜 15와 85의 값이 들어가는지는 따로 정리하지 않는다. (혹시 참고하실 분들은 바로 앞글 둘러 보시길 바라며...)

 

▲ 위 내용대로 코딩을 하면 조이스틱이 좌우로 움직일 때마다 그 값을 가져와서 첫 번째 서보모터에 전달을 하게 되고 모터는 각각의 방향대로 움직이게 된다. 역시 같은 내용으로 Y 값을 설정해서 위아래로 움직이도록 하자.

 

위 아래 움직이기

 

▲ 이게 끝이다. 이 얼마나 간단한 프로그램인가? 만약 똑같은 내용을 아두이노나 다른 프로그램에서 코딩을 했다면... 생각하기도 까마득하게 코딩이 많을 거 같다. 하지만 스크래치는 이렇게 몇 개의 블록만으로 프로그램 코딩이 가능하다.

 

개인적으로 몇 가지 프로그램의 기본서 정도만 읽은 상태인데 정말 비교도 안될 만큼 만들기가 쉽다. 여하튼 이렇게 몇 개의 블록으로 상황을 만든 후 스크래치와 아두이노를 연결해서 조이스틱을 조정하면 맨 앞에 영상에서 봤던 것처럼 간단하게 서보모터를 제어해 봤다. 다음은 뭘 해볼까?ㅎ

반응형