[하드웨어] 아두이노 + 블루투스 + 자이로센스 이용한 VR용 조이스틱 제작
오늘부터 아두이노와 센스들을 이용한 VR용 조이스틱 제작 관련 강의를 시작합니다.
먼저 간단한 총 형태의 무선 컨트롤러를 제작해보고자 합니다.
VR(가상현실)에서는 HMD가 눈을 겨려서 나의 발과 손을 대신할 컨트롤러가 필요한데 무선으로 해야 자유롭게 사용이 가능합니다.
따라서, 스마트폰 타입의 HMD에 사용할 컨트롤러로써 블루투스 통신을 이용하고자 합니다.
일단, 누구나 손쉽게 코딩이 가능한 아두이노를 사용할텐데, 블루투스가 내장된 블루이노라는 장치를 사용하고자 합니다.
먼저 블로이노는 크기도 작아서 컨트롤로 사용하기에 딱 안성맞춤 입니다.
즉, 블루이노에 조이스틱 모듈을 사용해서 스마트폰과 연동하도록 할텐데요.
오늘은 일반 아두이노와 조이스틱 모듈을 이용한 컨트롤 부터 실습해 보고자 합니다.
준비물 : 아두이노, 조이스틱, 점프선, 브래드보드
1. 아두이노 우노 : http://storefarm.naver.com/ic11401/products/556957855
2. 조이스틱 : http://storefarm.naver.com/ic11401/products/560066425
3. 점프선 : http://storefarm.naver.com/ic11401/products/562766553
4. 브래드보드 : http://storefarm.naver.com/ic11401/products/618645679
총 다해서 1만원도 안될 겁니다.
일반 게임기 조이스틱으로 많이 사용하는 방향 조정 장치와 동일하게 생겼죠!
축 변화에 따라 가변된 전압을 출력하는 장치이며, 그 값을 이용해서 방향 값을 얻습니다.
이제 아두이노와 결선을해 보겠습니다.
참 쉽죠! GND는 GND, +5V는 5V, VRX는 A0번, VRY는 A1번, SW는 A2번(회로도에 잘못 표기됨)
int joystick_x = 0;
int joystick_y = 1;
int joystick_z = 2; //조이스틱 X,Y,Z축을 저장
void setup()
{
pinMode(joystick_z,INPUT); // Z를 입력모드로
Serial.begin(9600); // 시리얼 통신을, 9600속도로 받습니다. (숫자 조정은 자유)
}
void loop()
{
int x = analogRead(joystick_x); // 조이스틱 X축의 아날로그 신호를 x에 저장
int y = analogRead(joystick_y); // 조이스틱 Y축의 아날로그 신호를 y에 저장
int z = analogRead(joystick_z); // 조이스틱 Z축의 아날로그 신호를 z에 저장
Serial.print(“X: “);
Serial.print(x); //시리얼 모니터에 ‘X: x값’을 표기
Serial.print(” Y: “);
Serial.print(y); //시리얼 모니터에 ‘ Y: y값’을 표기
Serial.print(” Z: “);
Serial.println(z); //시리얼 모니터에 ‘ Z: z값’을 표기하고 줄넘김
delay(100); // 100만큼 지연
}
조이스틱 모듈 축을 변경할때 마다 x, y, z 값의 변화를 확인할 수 있음.위 값을 이용해서 다음 강의에서는 유니티에서 오브젝트를 이동해 보겠습니다.