ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JoyStick과 서보 모터를 연결해서 서보 모터 제어하기
    Arduino/Joy Stick 2020. 11. 9. 18:02

    하드웨어의 구성에서 아두이노와 빵판을 먼저 연결하는데

    아두이노의 5V핀과 빵판의 VCC와 연결하고, 아두이노의 GND와 빵판의 GND에 연결한다.

    그리고 나서 기존의 조이스틱의 5V핀과 GND핀을 빵판의 VCC와 GND에 연결한다.

    서보 모터와의 제어는 아래를 참고한다.

    서보 모터의 6번핀을 아두이노의 D6번핀에 연결한다.

    모두 연결하면 아래의 그림이 된다.

     

    조이스틱의 x값을 오른쪽으로 이동시키면 각도가 증가하고

    반대로 조이스틱의 x값을 왼쪽으로 이동시키면 각도가 감소하도록 만들어보자.

    초기 설정에 서보 모터의 각도는 90도(중간 각도)로 설정한다.

     

    소스 코드

    더보기
    #include <Servo.h>
    
    Servo servo;
    
    int degree = 90;
    
    void setup() {
      // put your setup code here, to run once:
      servo.attach(6);  //  6번핀
    
      servo.write(degree);
    
      Serial.begin(9600);
    
      pinMode(8,INPUT_PULLUP);
    }
    
    void loop() {
    
      //  조이스틱의 x값이 오른쪽으로 이동한 경우
      if (analogRead(A0) > 700) 
      {
        degree += 5;
    
        //  180를 넘으면 각도를 180도로 고정
        if (degree > 180)
          degree = 180;
      }
      
      //  조이스틱의 x값이 왼쪽으로 이동한 경우
      if (analogRead(A0) < 400) 
      {
        degree -= 5;
    
        //  0보다 작으면 각도를 0으로 고정
        if (degree < 0 )
          degree = 0;
      }
      
      servo.write(degree);
    
      delay(100);
    }

     

    위의 예제와는 다르게 이번에는 조이스틱의 x값에 따라서 각도 움직이는데,

    이동한 조이스틱의 x값 만큼 서보 모터의 각도가 움직이도록 만들어보자.

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

    그리고 서보 모터의 각도는 0~180도의 값을 갖는다.

    즉, 조이스틱의 x값을 변환해서 각도 범위 0~180도의 사이값으로 만든다.

    소스 코드

    더보기
    #include <Servo.h>
    
    Servo servo;
    
    void setup() {
      // put your setup code here, to run once:
      servo.attach(6);  //  6번핀
    
      servo.write(0);
    
      Serial.begin(9600);
    
      pinMode(8,INPUT_PULLUP);
    }
    
    void loop() {
    
      int degree = (float)analogRead(A0) / 1023 * 180;
    
      Serial.println(String("각도 : ") +degree);
      
      servo.write(degree);
    
      delay(100);
    }

     

    'Arduino > Joy Stick' 카테고리의 다른 글

    JoyStick과 아두이노의 기본적인 연결과 값 읽기  (0) 2020.11.09

    댓글

Designed by Tistory.