본문 바로가기
Coding/Arduino

아두이노 서보모터(sg90) 제어하기

by 루민즈 2022. 6. 15.
반응형

안녕하세요 

이번엔 서보모터 중에 sg90을 제어해 봅시다. 

 

sg90은 다음과 같은 스펙을 가지고 있습니다. 

 

 

토크 : 1.8kg/cm

정격 전압 : 4.8v

정격 전압이 4.8v니 아두이노 5v로 연결해줘야 됩니다. 

 

 

회로

다음과 같이 회로를 구성해줍니다. 

9번 핀을 노란색 부분에 연결해주시고 

GND를 갈색 

5V를 빨간색에다가 꽂아주세요 

 

그리고 아두이노 IDE를 실행시켜 줍니다. 

 

SWEEP  회로

 

SWEEP 회로를 업로드시켜줍니다. 

그러면 서보모터가 180도씩 방향을 바꿔가면서 회전합니다. 

 

 

 

코드 분석

#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int pos = 0;    // variable to store the servo position

 

일단 Servo모터를 제어하기 위해 myservo 객체를 생성하였습니다. 

그리고 pos는 여기서 각도를 말합니다. 초기에 0으로 설정하였습니다. 

 

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

setup부분에서 attach(9)로 설정하였는데 

이건 9번핀을  쓰겠다는 의미입니다. 

 

void loop() {
  for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
    // in steps of 1 degree
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
  for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
    myservo.write(pos);              // tell servo to go to position in variable 'pos'
    delay(15);                       // waits 15 ms for the servo to reach the position
  }
}

loop부분에서 반복문을 통해 pos를 1씩 증가하고 있고 이걸 myservo객체에 write 해주고 있습니다. 

이를 통해 서보모터가 0도에서 180도씩 증가하는걸 알 수 있습니다. 

그리고 180까지 증가하면 delay(15)를 통해 15밀리세컨드 대기하고 

다시 180도에서 0도로 회전을 합니다. 그리고 다시 delay 15를 하고 있습니다. 

 

이상 아두이노 sg90. 서보모터 제어하기 였습니다. 

 


Post

다음글 무직자 대출 알아보기 >