AI 탐구노트

아두이노 : 조이스틱으로 서보모터 조종하기 - 1편 본문

DIY 테스트

아두이노 : 조이스틱으로 서보모터 조종하기 - 1편

42morrow 2024. 9. 29. 15:06

 

최근 아두이노를 이용해서 서보모터 컨트롤하는 것을 해 보고 있습니다. 

카메라 영상 입력을 받아서 이를 AI로 분석하고 이에 따라 서보를 동작시키는 것을 하는 것이 목적이죠.

하지만, 그 전에 간단한 수동 조작도 해 보고 싶었습니다.

그래서, 알리에서 서보모터 주문할 때 덤으로 조이스틱 모듈도 함께 주문해 봤습니다. 

 

이런 제품이었죠. 가격은 1500 수준인 것 같습니다. 작동은 잘 합니다. ^^

 

 

사진 : 아날로그 조이스틱 모듈 (출처 : 알리익스프레스)

 

 

 

 

아두이노, 조이스틱 연결

 

이번에 할 것은 아두이노와 조이스틱 모듈 간의 테스트이기 때문에 연결은 정말 간단합니다. 

5V, GND는 기본으로 연결하면 되니, VRX(X축), VRY(Y축), SW(On/Off 스위치 역할?)만 봐주면 되기 때문이죠.

VRX와 VRY는 아날로그 핀에 A0, A1에, SW는 Digital 7번 핀에 각각 연결했습니다. 

 

참고) 이후 서보모터를 컨트롤 하는 것도 테스트를 진행할텐데 그 경우도 복잡하지 않습니다. 

서보모터는 5V, GND가 고정이고, X방향 서보모터는 디지털 9번핀, Y방향 서보모터는 디지털 10번핀에 연결하면 됩니다.

회로 연결도는 아래와 같은데 Just a Hobby님의 유튜브 영상에서 해당 장면만 일부 크롭했습니다. (전체 영상도 한번 보시길 추천)

 

사진 : 아두이노, 조이스틱, 서보모터 연결도 - Just a Hobby 님의 채널 설명

 

 

Arduino에서 동작 테스트 

먼저 Arduino IDE에서 코딩을 통해 조이스틱의 동작 테스트를 진행해 봅니다. 

 

 

 

int kpin = 7;  // 스위치 핀
int xpin = A0; // X축 핀
int ypin = A1; // Y축 핀

void setup() {
  Serial.begin(9600);       // 시리얼 통신 시작
  pinMode(kpin, INPUT_PULLUP); // 스위치 핀을 입력으로 설정 (내부 풀업 저항 사용)
}

void loop() {
  int xValue = analogRead(xpin); // X축 값 읽기
  int yValue = analogRead(ypin); // Y축 값 읽기
  int switchValue = digitalRead(kpin); // 스위치 값 읽기

  // 출력
  Serial.print("X: ");
  Serial.print(xValue);
  Serial.print(" | Y: ");
  Serial.print(yValue);
  Serial.print(" | Switch: ");
  Serial.println(switchValue == HIGH ? "Released" : "Pressed");

  delay(100); // 100ms 대기 후 다시 읽기
}

 

 

결과 확인

역시 잘 나옵니다. X, Y 축값도 조이스틱 조종에 따라 잘 변하고 눌렀을 때의 변화도 잘 감지합니다. 

 

주의할 것은... 9600 baud로 속도를 맞춰줘야 한다는 겁니다.

이 값을 기본값으로 해두고 Serial Monitor를 봤는데 찍히는 결과값이 예상과 달랐습니다. 

 

 

 

 

 

 

아두이노를 이용해서 만들어 볼 수 있는 장난감이 생각보다 많을 것 같다는 생각이 들었습니다.