재료

  • USB 케이블 1개
  • 서보 모터 1개
  • 아두이노 우노 1개
  • 점프 와이어 3개

 이제까지 여러 센서에 대해서 사용법을 익히고 그에 맞는 응용 프로젝트를 진행해보았는데, 이제부터는 모터에 대해서 프로젝트를 진행하려고 합니다. 이번에 진행하게될 모터는 서보 모터인데, 이 모터는 장난감에서 흔히 볼 수 있습니다. 서보 모터는 기어로 되어 있어서 0도부터 180도까지 설정한 각도로 움직일 수 있습니다.  다음 장에서 할 DC 모터는 360도까지 회전이 가능하니, 이번 장에서 서보 모터에 대해서 배우고 다음 장에서 배울 DC 모터와 비교해봅시다.



STEP1. 준비물

아두이노 보드,  USB 케이블, 서보 모터, 점프 와이어 3개


STEP2. 회로도


서보 모터와 바로 연결할 수 없는 경우에는 브래드 보드를 이용하여 아래와 같이 연결해주시면 됩니다.




STPE3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <Servo.h>
 
const int motor=8;
/*서보모터 제어 라이브러리를 사용하기 위한 변수 선언*/
Servo servo; 
 
void setup() {
  // put your setup code here, to run once:
  servo.attach(motor);
}
 
void loop() {
  // put your main code here, to run repeatedly:
  servo.write(0); //서보모터의 각도를 0으로 초기화
  delay(1000);
 
  for(int i=0; i<180; i++){
    servo.write(i);
    delay(20);
  }
  delay(1000);
}


STEP4. 결과 확인

 코드에서 설정한 대로 180도까지 돌고난 후 다시 0도로 돌아가서 다시 돌아가는 것을 확인할 수 있습니다.


17번째 라인의 i를 360도까지 돌리는 것으로 바꾸어 설정한다면, 아래와 같은 결과를 얻을 수 있습니다. 서보모터는 180도까지밖에 돌지 못해서 360도로 설정해도 180도에 머물러 있습니다.



STEP5. 응용

 이제는 좀 더 응용해서 가변 저항을 이용해서 서보 모터의 각도를 조절해보도록 하겠습니다.

아래와 같이 가변저항을 회로에 추가해주시고,


스케치를 작성해서 업로드 해주시면,


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <Servo.h>
 
const int anglePin=0; //가변저항에 연결된 핀 번호
Servo servo;
 
void setup() {
  // put your setup code here, to run once:
  servo.attach(8); //서보 모터를 사용하는 핀 번호
}
 
void loop() {
  // put your main code here, to run repeatedly:
  int value =analogRead(anglePin);
  /*읽어 들인 값을 0에서 179까지의 수로 변환*/
  int angle=map(value, 0, 1023, 0, 179);
 
  servo.write(angle); //서보 모터의 각도를 설정
  delay(20);
}


가변저항에 따라서 각도가 변하도록 서보모터를 조작할 수 있습니다.

댓글 0

MADE BY

김민정

사물인터넷, 아두이노