Arduino/Joy Stick

JoyStick과 아두이노의 기본적인 연결과 값 읽기

DesignatedRoom 2020. 11. 9. 17:48

아두이노와 조이스틱의 연결

연결에는 어려운 것이 없다.

조이스틱의 VRX핀은 아두이노의 A0핀에 연결
조이스틱의 VRY핀은 아두이노의 A1핀에 연결
조이스틱의 SW(버튼)핀은 아두이노의 D8번핀에 연결

나머지는 VCC와 GND이다.

 

프로그래밍을 할 내용은 조이스틱의 x값(수평 값)의 변화가 일어나면 그 때의 정보를 출력해보자.

조이스틱의 x값과 y값은 0~1023의 값을 갖는다.

이 프로그래밍에서 생각해야할 것은 조이스틱은 민감하기 때문에

시리얼 모니터로 analogRead(A0)의 값을 확인하면 조이스틱을 움직이지도 않았는데 그 값이 매우 민감하게 변한다.

그렇기 때문에 값의 범위를 지정해서 특정한 값 범위를 중심으로 움직임을 판단하자.

그리고 현재의 조이스틱의 x값과 그 이전의 값을 저장하고 있어야 한다.

 

소스 코드

더보기
int x,y;            //  현재의 조이스틱의 x,y값
bool btn;           //  조이스틱의 버튼으로 현재의 버튼 상태

int prev_x, prev_y; //  그 이전의 조이스틱의 x,y값
bool prev_btn;      //  조이스틱의 버튼으로 이전의 버튼 상태

const int offSet = 100; //  조이스틱 x의 값의 범위

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(8,INPUT_PULLUP);  //  버튼은 풀업 저항으로 설정 

  //  x와 prev_x를 초기화
  x = analogRead(A0);     
  prev_x = x;
}

void loop() {
  // put your main code here, to run repeatedly:
  x = analogRead(A0);
  y = analogRead(A1);
  btn = digitalRead(8);

  //  조이스틱이 x범위로 움직였다면
  if (x > (prev_x + offSet) || x < (prev_x - offSet))
  {
    Serial.println(
      String("x = ") +x +" ," + String("y = ") +y + " ," + String("btn = ") + btn
      );
  }
  prev_x = x; //  현재의 x값을 이전의 x값으로 저장 

  prev_y = y; //  현재의 y값을 이전의 y값으로 저장 

  delay(100);
}