2018년 2월 26일 월요일

39. 조이스틱으로 서보모터 제어하기

Step0. 개요

조이스틱은 게임을 할 때 많이 사용합니다. 우리가 자동차운전할 때 기어변속하는 스틱을 움직여 사용합니다.  스틱을 움직여 로봇의 움직임을 조정하는 것이나 의사가 환자의 수술을 할 때 스틱을 움직여 로봇수술을 하는 것, 건설현장에서 포크레인차가 땅을 파서 옮기는 작업도 조이스틱을 활용하는 것이라고 할 수 있습니다. 일상생활에서 조이스틱을 응용하는 사레는 많이 있을 것입니다.조이스틱은 임의의 움직임 즉 상하좌우 운동을 제어할 수 있 수 있습니다.이는 X,Y축의 움직임이라고 할 수 있습니다.

Step 1. 준비물

아두이노, 브레드보드, 조이스틱, 서보모터 2개, 점퍼선을 준비합니다.

브레드보드


아두이노(UNO)

점퍼선


서보모터







조이스틱

Step 2. 회로도


Step 3. 조립하기

조립한 모습 (바닥은 두꺼운 종이에 글루건으로 고정)

종이 박스를 적당한 크기로 잘라 각 부품을 글루건으로 고정시킵니다. 오른 쪽에는 브레드보드와 아두이노를 왼쪽에는 서보모터 2개와 조이스틱을 글루건으로 고정시켜놓습니다. 서보모터는 서로 움직일 때 닿지 않도록 적당한 거리를 둡니다. 서보모터는  X ,Y축을 구별할 수 있도록서로 수직이 되도록 합니다.

Step 4. 아두이노 코드

아두이노를 실행해서 아래 코드를 입력한 후 에라없이 컴파일하고 업로드하면 됩니다. 이때 반드시 입력하기 전에 툴에서 보드와 포트를 확인해야 합니다.

// add the servo libaray
#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);
}

Step 5. 시연 동영상


Step 6. 후기

우연히 유투브 동영상을 보고 따라해 보고 나름대로 정리해서 올려보았습니다. 잘 응용하면 로봇팔이나 여러 동작을 유연하게 움직이는 물체에 이용할 수 있을 것 같습니다.블로그를 운영하면서 취미로 따라서 만들어 보았습니다.


0개의 덧글:

댓글 쓰기

에 가입 댓글 [Atom]

<< 홈