39. 조이스틱으로 서보모터 제어하기
Step0. 개요
조이스틱은 게임을 할 때 많이 사용합니다. 우리가 자동차운전할 때 기어변속하는 스틱을 움직여 사용합니다. 스틱을 움직여 로봇의 움직임을 조정하는 것이나 의사가 환자의 수술을 할 때 스틱을 움직여 로봇수술을 하는 것, 건설현장에서 포크레인차가 땅을 파서 옮기는 작업도 조이스틱을 활용하는 것이라고 할 수 있습니다. 일상생활에서 조이스틱을 응용하는 사레는 많이 있을 것입니다.조이스틱은 임의의 움직임 즉 상하좌우 운동을 제어할 수 있 수 있습니다.이는 X,Y축의 움직임이라고 할 수 있습니다.Step 1. 준비물
아두이노, 브레드보드, 조이스틱, 서보모터 2개, 점퍼선을 준비합니다.브레드보드 |
아두이노(UNO) |
점퍼선 |
서보모터 |
조이스틱 |
Step 2. 회로도
Step 3. 조립하기
조립한 모습 (바닥은 두꺼운 종이에 글루건으로 고정) |
종이 박스를 적당한 크기로 잘라 각 부품을 글루건으로 고정시킵니다. 오른 쪽에는 브레드보드와 아두이노를 왼쪽에는 서보모터 2개와 조이스틱을 글루건으로 고정시켜놓습니다. 서보모터는 서로 움직일 때 닿지 않도록 적당한 거리를 둡니다. 서보모터는 X ,Y축을 구별할 수 있도록서로 수직이 되도록 합니다.
Step 4. 아두이노 코드
아두이노를 실행해서 아래 코드를 입력한 후 에라없이 컴파일하고 업로드하면 됩니다. 이때 반드시 입력하기 전에 툴에서 보드와 포트를 확인해야 합니다.
#include <Servo.h>
// define our servos
Servo servo1;
Servo servo2;
//define joystic pins (Analog)
int joyX = 0;
int joyY = 1;
// variable to read the values from the analog pins
int joyVal;
void setup() {
servo1.attach(3);
servo2.attach(5);
}
void loop() {
// read the value of joystic (between 0~1023)
joyVal = analogRead(joyX);
joyVal = map(joyVal,0,1023,0,180); // servo value between 0-180
servo1.write(joyVal); //set the servo position according to the joystic value
joyVal= analogRead(joyY);
joyVal = map(joyVal,0,1023,0,180);
servo2.write(joyVal);
delay(15);
}