아두이노 서보모터(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의 값을 출력한다
가변저항을 아두이노에 연결한다
서보모터도 아두이노에 연결한다
가변저항을 돌려서 값을 전달하면 서보모터가 해당 값만큼
회전하는 것을 확인할 수 있다