본문 바로가기

Arduino/[2] Arduino Module

[Arduino Module] #4. 서보 모터 제어하기

728x90
반응형

Servo

Servo 모터는 움직임을 만들어 내는데 아주 중요한 부품이다. 이러한 서보 모터는 Servo 라이브러리를 이용하여 제어한다.

서보 함수

servo.attach(pin); servo: 서보 모터에 사용할 객체 변수. 서보 라이브러리를 할당한 변수라고 생각하면 쉽다.
pin: 서보 모터를 사용할 핀 번호.
servo.write(angle); angle: 서보 모터에 쓸 각도값(0~180도)

서보 모터의 파형 이해하기

서보 모터의 파형의 주기는 일반적으로 20ms이며, 주파수는 50Hz이다. 입력 파형의 HIGH값은 1~2ms 사이의 값을 갖는다.

서보 모터는 이러한 입력 파형의 값에 따라 움직이는 각도가 다르다.

서보 모터 사용하기

서보 모터 회로도

서보 모터 사용 코드

#include<Servo.h>
Servo ms;
void setup(){
    Serial.begin(9600);
    ms.attach(9);
    ms.write(0);
}
void loop(){
    if(Serial.available()>0){
        char u = Serial.read();
        if(u!= '\n'){
            if(u == '1') ms.write(0);
            else if(u == '2') ms.write(30);
            else if(u == '3') ms.write(60);
            else if(u == '4') ms.write(90);
            else if(u == '5') ms.write(120);
            else if(u == '6') ms.write(180);

            delay(100);
        }
    }
}

코드 해석

#include<Servo.h>
Servo ms;
  • #include 함수를 통해 서보 라이브러리를 가져옴.
  • Servo ms: 서보 모터의 객체 변수 ms를 선언함.
void setup(){
    Serial.begin(9600);//출력 속도 설정
    ms.attach(9);//서보 모터의 핀 설정
    ms.write(0);//서보 모터의 각 설정
}
  • 시리얼 모니터의 통신 속도를 9600으로 설정한다.
  • 서보 모터의 핀을 9로 설정한다.
  • 서보 모터의 각도를 0으로 초기화한다.
void loop(){
    if(Serial.available()>0){
        char u = Serial.read();
        if(u!= '\n'){
            if(u == '1') ms.write(0);
            else if(u == '2') ms.write(30);
            else if(u == '3') ms.write(60);
            else if(u == '4') ms.write(90);
            else if(u == '5') ms.write(120);
            else if(u == '6') ms.write(180);

            delay(100);
        }
    }
}

만약 시리얼 모니터에 입력이 있다면, 문자형 변수 u에 입력된 값을 저장한다.

이후 입력값에 따라 모터의 각을 변경하고 0.1초 기다린다.

입력값 모터의 각 제어
1 0
2 30
3 60
4 90
5 120
6 180

 

728x90
반응형
댓글