[아두이노] [강좌] 41. 서보 모터 (2) - Servo 함수 알아보기

대망의 모터 시리즈 완결편. 두둥.


brown_and_cony-8 




서보 모터도 스텝 모터와 마찬가지로 아두이노에서 라이브러리를 제공하고 있다.

 

 

 

스케치 툴의 파일예제→Servo→Sweep” 파일을 선택해보자기본 동작은 이전 강좌에서 구현한 예제와 동일하다. 0°에서 180°를 왔다 갔다 하는 것



 Servo→Sweep.ino

 

 #include <Servo.h>

 

 Servo myservo;  // create servo object to control a servo

 

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

 

 void setup()

 {

   myservo.attach(9, 600, 2400);  // attaches the servo on pin 9 to the servo object

 }

 

 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 15ms 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 15ms for the servo to reach the position

   }

 }


 



서보 라이브러리를 사용하기 위해 “Servo.h” 파일을 추가했고, Servo 클래스 타입인 ‘myservo’라는 객체를 선언했다그리고 서보 위치를 저장하는 변수 ‘pos’를 선언한 후 0으로 초기화 해준다.

 

setup() 함수에서는 ‘myservo’ 객체를 초기화해주는 attach() 함수를 호출한다.

 


Servo.attach(pin)

 

Servo.attach(pin, min, max)



Servo 객체의 초기화 함수다.



 

 매개 변수

 

 pin : 신호를 출력할 핀 번호를 지정한다여기서는 9번 핀을 지정했다.

 

 min : 최소 펄스 폭모터가 시계 반대 방향으로 최대한 이동했을 때의 신호 시간을 설정한다설정하지 않을 경우 기본으로 544 마이크로초가 설정된다.

 

 max : 최대 펄스 폭모터가 시계 방향으로 최대한 이동했을 때의 신호 시간을 설정한다설정하지 않을 경우 기본으로 2400 마이크로초가 설정된다


 



min max 값은 줘도 되고 안 줘도 됨.

 

참고로 pin 번호는 스케치 툴 버전이 0016 이후라면 어느 핀을 지정해도 상관 없지만 이전 버전이라면 9번 핀과 10번 핀만 사용할 수 있다.

 


서보 라이브러리는 아두이노 메가(Mega 2560/ADK) 이 외의 보드인 경우 최대 12개의 모터를 제어할 수 있고메가의 경우는 48개까지 제어할 수 있다. 메가 이 외의 보드에서즉 우노(Uno) 등의 보드에서 서보 라이브러리를 사용할 경우 9번 핀과 10번 핀을 PWM 핀으로 사용할 수 없다동일한 타이머를 사용하기 때문에메가의 경우 서보 모터 개수가 12개 이하라면 PWM 핀과 상관없이 사용할 수 있고 12개 이상을 사용한다면 11, 12번 핀을 PWM 기능으로 사용할 수 없다.

 

 

다시 예제 소스로 돌아가서.

 

 

그리고 loop() 함수에서는 for() 반복문을 사용하여 0°에서 180°까지 회전한 후 다시 0°로 돌아온다회전 각도 설정을 위해 사용된 함수는write() 함수.



 

Servo.write(angle)



서보 모터의 위치를 지정한다. 지정한 위치에 해당하는 신호가 핀으로 출력된다.



 

 매개 변수

 

 angle : 회전 각도일반 서보 모터의 회전 각도를 설정하지만서보 모터가 회전 가능한 서보 모터일 경우 90°에서 정지, 0°에서 최고 속도로 회전하며 180°에서는 반대 방향으로 회전한다. 


 


회전 가능한 서보 모터란서보 방식으로 제어되는 DC 모터 등을 말한다. DC 모터를 제어하기 위한 모터 드라이버 중에 서보 방식을 사용하는 애들이 있음얘들을 사용할 경우에 0을 주면 최고 속도로 회전하며, 180을 주면 반대 방향으로 최고 속도로 회전한다. 45를 주면 중간 정도의 속도로 회전하겠지.

 


 

Servo.writeMicroseconds(us)

 


서보 모터의 신호를 각도가 아닌 마이크로초 단위로 지정한다대부분의 서보 모터의 경우 1000 ~ 2000 사이의 값을 지정하면 된다.



 

 매개 변수

 

 us : 서보 제어 신호 폭(=시간). 마이크로초 단위.


 

 



Servo.detach()


Servo.attach() 함수로 설정한 핀으로 출력하던 신호를 중단하고 기능을 해제한다. 매개 변수는 엄슴.

 


서보 라이브러리를 사용할 때 Servo.write() 함수나 Servo.writeMicroseconds() 함수를 사용해서 신호를 출력하면 Servo.detach() 함수가 호출될 때까지 계속해서 출력된다는 것을 기억할 것.

 



아두이노 라이브러리는 참 잘 만들었어만든 사람 만나면 궁디 팡팡 해주고 싶다.

 


지난 시간에 설명한대로서보 모터는 특히 전류를 많이 필요로 하므로 꼭 외부 전원을 연결해주자서보 모터의 전원 핀에 외부 전원을 바로 연결해도 되고아두이노 보드에 외부 전원을 연결한 후 VIN 핀에서 모터 전원으로 연결해도 된다신호는 당연히 아두이노 핀이랑 연결하면 되고외부 전원의 GND와 아두이노 보드의 GND는 연결되어야 한다.



 

 

모터 설명은 여기까지바바이.

0
0
이 글을 페이스북으로 퍼가기 이 글을 트위터로 퍼가기 이 글을 카카오스토리로 퍼가기 이 글을 밴드로 퍼가기

임베디드 보드

번호 제목 글쓴이 날짜 조회수
58 아두이노 [강좌] 50. 와이파이 통신 (4) - WebServer 예제 icon 양재동메이커 03-21 9,528
57 아두이노 [강좌] 49. 와이파이 통신 (3) - WebClient 예제 icon 양재동메이커 03-21 13,202
56 아두이노 [강좌] 48. 와이파이 통신 (2) - 커맨드 모드 사용하기 (WiFly 쉴드) icon 양재동메이커 03-20 8,611
55 아두이노 [강좌] 47. 와이파이 통신 (1) - 와이파이란 무엇인가 icon 양재동메이커 03-20 12,379
54 아두이노 [강좌] 46. 블루투스 통신 (5) - 프로토콜 만들기 (2) icon 양재동메이커 03-20 8,897
53 아두이노 [강좌] 45. 블루투스 통신 (4) - 프로토콜 만들기 (1) icon 양재동메이커 03-20 10,391
52 아두이노 [강좌] 44. 블루투스 통신 (3) - RN42 모듈에서 직접 접속하기 icon 양재동메이커 03-20 7,725
51 아두이노 [강좌] 43. 블루투스 통신 (2) - 스마트폰과 통신하기 icon 양재동메이커 03-20 9,827
50 아두이노 [강좌] 42. 블루투스 통신 (1) - RN42 블루투스 모듈 실습하기 icon 양재동메이커 03-20 10,968
49 아두이노 [강좌] 41. 서보 모터 (2) - Servo 함수 알아보기 icon 양재동메이커 03-20 12,682
48 아두이노 [아두이노 강좌] 40. 서보 모터 (1) - 서보 모터 동작 방식 icon 양재동메이커 03-20 12,616
47 아두이노 [강좌] 39. 스텝 모터 (3) - 모터 드라이버 EasyDriver(A3967) 사용하기 icon 양재동메이커 03-20 8,970
46 아두이노 [강좌] 38. 스텝 모터 (2) - Stepper 함수 알아보기 icon 양재동메이커 03-20 12,534
45 아두이노 [강좌] 37. 스텝 모터 (1) - 스텝 모터 동작 방식 icon 양재동메이커 03-20 9,311
44 아두이노 [강좌] 36. DC 모터 (2) - DC 모터 드라이버 실습하기 (TB6612FNG) icon 양재동메이커 03-20 9,173
43 아두이노 [강좌] 35. DC 모터 (1) - DC 모터 동작 방식 icon 양재동메이커 03-20 11,443
42 아두이노 [강좌] 34. SPI 통신 (3) - 기압 센서(MPL115A1) 실습하기 icon 양재동메이커 03-20 8,120
41 아두이노 [강좌] 33. SPI 통신 (2) – SPI 함수 알아보기 icon 양재동메이커 03-20 14,484
40 아두이노 [강좌] 32. SPI 통신 (1) - SPI 통신이란 무엇인가 icon 양재동메이커 03-20 18,959
39 아두이노 [강좌] 31. I2C 통신 (3) - 온도 센서(TMP102) 실습하기 icon 양재동메이커 03-20 14,771