2014-08-05 15:42:05

아두이노는 다양한 응용 분야에 맞춰서 여러가지 모터를 사용할 수 있습니다.
모터의 종류에는 일반적으로 많이 쓰이는 DC 모터(직류 모터), 0-180도 혹은 360 까지 각도제어가 가능한 서보 모터,
일정한 각도와 힘으로 움직이는 스텝 모터 등이 있으며 이밖에도 토크와 구동전압, 작동 방식에 따른 다양한 모터가 있습니다.
그 중 서보모터는 각도를 정밀하게 제어할수 있는 장점을 이용하여
로보틱스 분야에서 물체의 관절부분에 많이 사용되고 있습니다.

이 예제에서는 가변저항기가 돌아간 각도(저항값)에 따라 서보의 각도를 조절해 보겠습니다.

| NO | 부품명 | 수량 | 상세설명 |
| 1 | 아두이노 우노 R3 | 1 | 아두이노 |
| 2 | 서보모터 | 1 | 서보모터 |
| 3 | 가변저항 | 1 | 저항 |
| 4 | 브레드보드 | 1 | 브레드보드 |
| 5 | 점퍼케이블 | 6 | 점퍼케이블 |
| 부품명 | 아두이노 우노 R3 | 서모 모터 | 기변 저항 | 브레드보드 | 점퍼케이블 |
| 파 트 | x1 |
X1 |
X1 |
X1 |
X6 |


아래의 코드를 아두이노에 업로드 합니다.
/* 출처 : www.arduino.cc */ #include <Servo.h> //서보 라이브러리를 불러옵니다. const int potentiometerPin = 0;//가변저항기에 연결한 아날로그 핀의 번호를 설정합니다. Servo servo; void setup() { servo.attach(9); // 서보를 사용하는 핀으로 디지털 핀9번을 설정합니다. } void loop(){ int value = analogRead(potentiometerPin); //가변저항의 값을 읽어들입니다. int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다. servo.write(angle); //서보의 각도를 설정합니다. delay(15); // 서보가 지정한 각도까지 움직이는 동안 대기 }
int angle = map(value,0,1023,0,179);//읽어 들인 값을 0에서 179까지 변환 합니다.
map함수는 map(value, 현재 최소값, 현재 최대값, 변경하고자 하는 최소 값, 변경하고자 하는 최대값)으로 구성되며,
아나로그 센서에서 읽어 온 값을 처리할때에 유용하게 사용됩니다.
이 예제 에서는 회전 각도가 Servo 라이브러리에서 지원하는 범위보다 작은 서보가 있을수 있는데,
사용 중인 서보가 맨 끝 값에 도달해서 떨림 현상을 보일 경우 그 현상이 사라질 때까지 map 함수의 출력 범위를 축소해 주시면 됩니다.
처음 시작점에서 떨림 현상을 보이는 경우에는 반대로 출력 범위 시작값을 높여줍니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!
서보모터, 가변저항, 아두이노