조이스틱의 활용도는 아주 다양합니다. 흔히 볼 수 있는 오락실 게임기, RC카 리모컨 조종 등 다양한 곳에서 사용이 되어지고 있는데요 오늘은 아두이노를 활용해서 조이스틱을 제어해보도록 하겠습니다.
이번 포스팅은 제가 원격 조종비행기를 만들기 위한 프로젝트입니다. :)
■ 조이스틱 원리
- 2개의 가변저항과 1개의 스위치로 구성된 제어모듈
조이스틱은 아래 사진과 같이 X축, Y축의 데이터를 받아오도록 2개의 가변저항과 하나의 푸쉬버튼(스위치)로 구성이 되어있어, 우리가 흔이 케릭터를 움직일 때, 상하좌우를 하나의 조이스틱에서 진행을 하는데, 위로 올리면 점프 혹은 위로 이동, 아래로 내리면 앉거나 눞는 제스쳐를 취하죠. 그리고 좌우로 움직임은 앞뒤로의 움직임을 컨트롤 합니다.
이를 가능하게 하는게 가변저항인데, 가변저항을 통해서 아날로그 신호를 받아, 정밀한 제어가 가능한거죠~!
혹시 가변저항을 통한 제어를 안해보신 분이라면, 아래 포스팅 된 내용을 참조하셔도 좋을 것 같습니다.
https://kgu0724.tistory.com/132?category=704660
■ 조이스틱 회로 구성
우선 조이스틱은 아래와 같이 회로를 구성해줍니다. X축은 아날로그(A0)핀, Y축은 아날로그(A1)핀에 연결을 해주세요.
오늘은 X,Y의 이동에 대한 값만 받을 것이기 때문에, 별도로 회로 연결은 하지 않았습니다.
■ 적용 코드
적용 코드는 아주 간단합니다.
아날로그 값을 받아서 출력을 할텐데요. 한 가지 알아둬야 할 부분은 Arduino Analaog 데이터는 0~1023으로 값이 들어오는데. 조이스틱의 움직임에서 왼쪽으로 가게 되면 -방향으로 이동을 하게 되는 것이죠?
그래서 map함수를 적용해서 -512~512까지 map을 해주도록 하겠습니다.
void setup() {
Serial.begin(9600);
}
void loop() {
int ReadLx = analogRead(A0);
int ReadLy = analogRead(A1);
int mapLX = map(ReadLx, 0, 1023, -512, 512);
int mapLY = map(ReadLy, 0, 1023, -512, 512);
Serial.print("LX : ");
Serial.println(mapLX);
Serial.print("LY : ");
Serial.println(mapLY);
}
자 그러나, 제가 만들고자 하는 조이스틱은 2개입니다. 그래서 2개를 활용하기 위해서는 어떻게 해야 할까요?
똑같이 연결을 하고 A2,A3에 오른쪽 RightRx, RightRy값을 받아오면 되겟습니다.
이제 Joystick을 활용해서 서보모터를 제어해보도록 하겠습니다.
https://kgu0724.tistory.com/155
'메이커 이야기 > 아두이노' 카테고리의 다른 글
아두이노 스케치 단축키 정리 | Arduino ShortCut Example (0) | 2020.02.24 |
---|---|
[control servomotors with joystick] 조이스틱으로 서보모터 제어하기 (1) | 2020.02.24 |
[블루투스모듈] HC-06 Bluetooth On/Off (0) | 2020.02.11 |
[아두이노 서보모터] 서보모터 제어하기 (0) | 2020.02.10 |
[아두이노 릴레이모듈] 릴레이모듈 LED 제어 (0) | 2020.02.07 |