ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JoyStick과 아두이노의 기본적인 연결과 값 읽기
    Arduino/Joy Stick 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);
    }

     

    댓글

Designed by Tistory.