티스토리 뷰

아두이노 서보모터(SG90) 구동하는 방법


인터넷에서 저렴하게 구할수 있는 미니 서보모터(Servo Moter)를 

구동하는 예제를 만들어 보자.


서보모터(SG90)180도를 회전할수 있으며 

1도씩 각도 값을 전달하여 정밀하게 모터를 컨트롤 할 수 있다. 

로봇을 제작할때 많이 사용한다고 한다.



소스는 아두이노 기본 예제를 참조 하였다.




서보모터가 180도 회전하고 다시 반대로 180도 회전하는 예제



서버 모터를 쉽게 컨트롤 하기 위해서는 "Servo.h" 파일은 포함해야 한다


#include<Servo.h>

Servo myservo; int servoPin = 12; int pos = 0; void setup() { myservo.attach(servoPin); } void loop() { for(pos = 0; pos < 180; pos += 1) { myservo.write(pos); delay(15); //delay값을 조정하여 모터의 속도를 컨터롤가능 } for(pos = 180; pos>=1; pos-=1) { myservo.write(pos); delay(15); } }


모터의 3가지 선을 잘 연결한다

브라운색 GND, 빨간선 5V, 오렌지색 12번핀




연결이 다 되었으면 구동시켜 보자

모터가 180도 회전하고 다시 반대로 180도 회전하는 것을

확인할 수 있다

내 모터는 불량품인지 180도를 다 회전하지 못한다 ㅠ




가변저항(B10K)의 값만큼 모터를 구동하는 예제



"map"함수를 사용하여 가변저항의 값(1024)과 서버모터 회전각도(180)과

매핑하여 가변저항값 만큼 서버모터가 회전하도록 한다


#include<Servo.h>

Servo myservo;
int servoPin = 12;
int potPin = A0;
int val;

void setup() {
  myservo.attach(servoPin);
}

void loop() {
  val = analogRead(potPin);
  val = map(val, 0, 1023, 0, 179);
  myservo.write(val);
  delay(15);  
}


쉽게 구할수 있는 가변저항(B10K) 이다

0~1023의 값을 출력한다



가변저항을 아두이노에 연결한다




서보모터도 아두이노에 연결한다



가변저항을 돌려서 값을 전달하면 서보모터가 해당 값만큼

회전하는 것을 확인할 수 있다


댓글
댓글쓰기 폼
최근에 올라온 글
최근에 달린 댓글
Total
1,437,680
Today
1,052
Yesterday
524
링크