아두이노 라즈베리파이 전자회로

아두이노, 서보모터 제어 예제

수알치 2019. 10. 31. 16:53

아두이노, 서보모터 제어 예제

 

글. 오상문 sualchi@daum.net

 

예제에 사용한 서보모터는 SG90 모델입니다. 직접 제어할 수도 있는데 Servo 라이브러리를 사용하는 게 편합니다.

 

Servo.zip

 

 

일반적인 입력 각도는 180도 범위이고 저는 0~179 도 사이를 사용합니다. 참고로, Servo.h 파일에서는 200보다 작으면 일반 각도로 인식한다고 합니다.

 

void write(int value); // if value is < 200 its treated as an angle, otherwise as pulse width in microseconds

 

핀 연결 방법은 다음과 같습니다.

 

[아두이노]                          [서보모터]

디지털 7번핀 --------------- 데이터핀  (주황색 또는 흰색 선)

5V ------------------------ VCC (빨간색 선)

GND ---------------------- GND (갈색 또는 검정색 선)

 

 

[그림] 연결한 모습

 

 

 

예제 코드는 다음과 같습니다.

 

#include <Servo.h>

 

Servo servo;   // servo 객체
int value = 0;   // 각도 변수

 

void setup()

{
  servo.attach(7);      // 7번핀 지정
  Serial.begin(9600);  // 시리얼 모니터
  servo.write(0);        // 서보모터 각도 0 
}

 

void loop()

{
  if(Serial.available()) {     // 시리얼 모니터 가능하면 
    char data;
    data = Serial.read();     // 시리얼 모니터 입력 값


    if(data == '1') {          // 1이 입력되면
      value += 30;            // 30도 증가
      value %= 180;          // 180도 이상이면 0도로 설정
      servo.write(value);    // 서보모터 각도 변경     
    }   
  }
}

 

<이상>

Servo.zip
0.02MB
반응형