메뉴 건너뛰기

XEDITION

아두이노

서보모터 제어하기

묵묵이 2017.01.16 13:10 조회 수 : 1

 

 

 

서보모터 제어하기를 해보겠습니다.

 

 

저는 위에서 보이는 2가지의 서보모터를 가지고 있습니다.

 

DC모터처럼 계속 돌아가는 것이 아닌, 필요한 각도만큼 변경 시킬 수 있는 것을 서보 모터라고 합니다.

 

왕초보를 위한 포스팅 이므로 우선 서보 모터를 제어하려면 c언어 라이브러리에 대한 개념을 이해해야 합니다.

어려운 용어가 아닌 간단하게만 설명하겠습니다.

함수는 프로그래머가 여러 명령어들을 간단히 실행하도록 하나의 명령어로 짜놓은 거라고 생각한다면,

라이브러리는 그러한 명령어인 함수들의 집합체라고 생각하면 될듯 합니다.

 

즉, 라이브러리를 불러온다는 것은 서보를 돌리려면 그에 필요한 명령어들이 이미 짜여져 있는 것을 불러와서 간단하게 사용할 수 있도록 해 준다는 것입니다. 라이브러리가 포함되어있는 파일을 헤더파일이라고 하며 라이브러리명.h 로 된 헤더파일을 불러오면 됩니다.

 

자 그럼 서보모터를 제어할수 있는 라이브러리를 불러오겠습니다.


#include <Servo.h>

 

위의 구문을 그대로 작성해 주셔도 되구요.

아두이노 프로그램 하에서 메뉴에서 불러오셔도 됩니다.

 

 

 

아두이노 메뉴중 [스케치] [라이브러리 포함하기]에 보시면 Servo가 있음을 알수 있을 것입니다. 그곳에서 라이브러리를 포함하면 #include <Servo.h>가 구문 상단에 포함되는 것을 확인하실수 있습니다.

 


 

 

Servo.h 헤더파일을 지금부터 작성하는 구문에 포함하겠습니다. 라고 이해하면 편할 듯 합니다.

 

 

그럼 이제 Servo와 관련된 명령어들을 살펴보겠습니다.

 

Servo 객체명; 

ServoServo.h 에 정의되어있는 함수입니다.
뒤의 객체명은 변수명처럼 프로그래머가 지어준 이름입니다.
여기서는 객체명은 Servo 명령어를 따르는 서보모터이름을 만들어 준 것 정도로만 이해하면 될 듯 합니다.

 

객체명.attach(핀번호);
setup 내에서 객체명으로 이름지어진 서보모터가 몇 번핀에 연결된 서보모터인지에 대해서 설정해 줍니다. 핀번호는 PWM이 가능한 핀이어야 합니다. 그래야 digitalWrite처럼 1,0으로만 표현되는 것이 아닌 analogWrite처럼 여러가지 설정값으로 컨트롤이 가능하겠지요?

 

서보모터가 여러개 있을때를 생각하면 객체명도 2개 있어야 할 것이고, 그 객체명에 따른 핀번호를 결정지어줘야 겠구나 라고 생각하시면 이해가 빠르실거라 생각됩니다.

 

객체명.write(숫자);  
숫자값은 각도를 의미하며 그 각도만큼 서보모터를 돌려라 라는 뜻입니다.

 

서보모터
갈색선 – GND
빨간선 – 5V
주황선 – 컨트롤 핀 (~ PWM이 가능한 핀에 위치해야야 함)

 

자 그럼 9번핀에 연결된 서보모터를 0-180도,그리고 180도에서 다시 0도로 돌아오는 반복 구문을 작성해 보겠습니다.

 

 

 

우선 회로구성은 다음과 같이 하였습니다. 캐퍼서티는 없어도 되긴하지만 서보모터가 전력이 순간 부족할 것을 대비해서 작은걸 걸어주면 좋을듯 합니다.

 

자 그럼 구문을 작성해 보겠습니다.

 

#include <Servo.h>  // Servo 라이브러리를 불러옵니다.
Servo myservo;  // Servo를 따르는 객체명을 정합니다.

void setup()
{

  myservo.attach(9);  // myservo는 9번핀에 의해 컨트롤 됨을 설정합니다.
}

void loop()
{
for (int i=0; i<=180; i=i+10)
   {

    myservo.write(i);  // myservo는 i 값만큼의 각도를 갖습니다.
    delay(100);  // 그 각도에서 0.1초 기다립니다.
   }
for (int i=180; i>=0; i=i-10)
   {
    myservo.write(i);
    delay(100);
   }
 }

 

저는 위와 같은 구문을 작성해 보았습니다. ^.^

실제로 아들 교육할때는 capacity를 넣어서 했으나 포스팅 작성하기위한 곳에서는 빵판도 연결하지 않고 보드에 다이렉트로 연결해서 테스트 해보았습니다. ㅎㅎ

 

 

바닦이 고정이 안되어있어서. 그냥 놔두면 서보모터가 덜덜떨면서 몸통이 움직여 버려서 부득이하게 잡고 영상을 촬영하였습니다.

 

자 다음번엔 이전에 했던 CDS셀로 광센서값을 받아들여와서 그 값에 따라서 주변이 밝아지면 서보모터가 반시계방향으로 돌고, 어두워지면 시계방향으로 돌아가는 구문을 작성해 보도록 하겠습니다. ^.^

한번 고민해보시기 바랍니다.

 

 

 

http://blog.naver.com/yally23232/220793223986

 

 

번호 제목 글쓴이 날짜 조회 수
공지 IR 리모콘 코드 따기 [1] 묵묵이 2017.02.10 14
공지 rc 카 작업용 [1] 묵묵이 2017.02.07 14
공지 [sketch_mydust] 미세멘지 측정기 작업 용 [2] 묵묵이 2017.02.07 35
23 sprintf2 사용법 묵묵이 2017.02.07 5
22 디지털 온 습도계 사용 DHT22 [2] file 묵묵이 2017.02.06 5
21 미세먼지 측정기 참조 [3] 묵묵이 2017.02.06 5
20 test ir 리모컨 테스트 [1] 묵묵이 2017.01.23 5
19 ir 리모컨 값 기록 묵묵이 2017.01.18 2
18 아두이노 IR 리모컨 R 신호 반복문제 test 묵묵이 2017.01.18 6
17 아두이노 톤함수를 사용하지 않고 부저 소리내기 묵묵이 2017.01.17 1
16 키보드로 멜로디 연주하기 묵묵이 2017.01.17 4
15 아두이노에 작은별 멜로디 스케치 묵묵이 2017.01.17 4
14 아두이노 미세먼지 측정기 .. 만들기 file 묵묵이 2017.01.17 2
13 서버모터 테스트 소스 묵묵이 2017.01.16 7
» 서보모터 제어하기 묵묵이 2017.01.16 1
11 아두이노 프로 미니 보드와 USB TO TTL 모듈을 이용한 프로그램 업로드 묵묵이 2017.01.13 1
10 ir 리모컨 수신 test ( 현제 작업중 소스) [1] file 묵묵이 2017.01.12 4
9 ir 적외선 센서를 이용한 거리 측청 - test 잘됨 묵묵이 2017.01.12 2
8 초음파 센서 참고 소스 [1] 묵묵이 2017.01.12 4
7 아두이노 기초강좌 - IR 센서 [1] 묵묵이 2017.01.11 7
6 Arduino 아두이노 - relay module control 릴레이 모듈 제어 [1] 묵묵이 2017.01.10 19
5 아두이노 나노 알아보기 묵묵이 2017.01.10 2
위로