1. 푸시버튼을 이용한 서보모터 제어
페이지 정보
작성자 관리자 댓글 1건 조회 5,514회 작성일 18-10-28 13:52본문
1. 푸시버튼을 이용한 서보모터 제어
서보모터(Servo Motor)는 모터와 제어구동보드를 포함하는 것으로 모터 자체만으로 서보모터라고 하지 않는다. 즉, 서보모터는 모터의 구동시스템까지 포함하는 것이다.
주로 CCTV 카메라, 캠코더, DVD, 프린터 등에서 모터처럼 명령에 따라 정확한 위치와 속도를 제어할 수 있는 모터를 말한다.
푸시버튼은 디지털 핀 3번에 연결, 서보모터는 디지털 핀 9번에 연결한다.
푸시버튼을 눌러서 동작시킬 경우 서보모터의 회전각도를 0 ~ 180으로 이동시키는 제어을 할 수 있다.
PWM을 사용하여 서보 모터를 제어할 수 있다. 서보모터의 펄스폭은 1ms~2ms의 범위를 가지며, 1ms일 때 0도, 2ms 일 때 180도를 나타낸다. 그러므로 1.25ms일 때 45도, 1.5ms일때 90도 라는 것을 유추할 수 있다.
위와 같은 방법보다 servo 라이브러리를 사용하면 좀더 편하게 서보모터를 제어할 수 있다.
(1) 회로도 구성
(2) 소스 코딩
digitalRead(pin)
지정된 디지털 핀에서 HIGH 또는 LOG값을 읽는다.
pin : 읽어 내고 싶은 디지털 핀의 번호
(3) 실행결과
시뮬레이션을 시작하면, 버튼을 눌렀을 때, 시리얼모니터에서 아래와 같이 각도가 출력된다.
서보모터가 회전하는 것을 확인할 수 있다.
댓글목록
관리자님의 댓글
관리자 작성일
#include <Servo.h>
int pos = 0; // 서보모터의 위치 값 변수 선언
int button = 2;
Servo servo_9 ; // 서보모터 선언
void setup()
{
servo_9.attach(9);
// 서보모터를 9번 핀으로 선언
pinMode(button, INPUT);
Serial.begin(9600);
}
void loop()
{
if(digitalRead(button) == HIGH) {
for(pos = 0; pos <= 100; pos += 1) {
servo_9.write(pos);
// 서보모터를 pos값 만큼 위치이동
Serial.print(pos);
Serial.print(" , ");
delay(15);
}
Serial.println("");
for(pos=100; pos >= 0 ; pos -= 1) {
servo_9.write(pos);
// 서보모터를 pos값 만큼 위치이동
Serial.print(pos);
Serial.print(" , ");
delay(15);
}
} else {
servo_9.write(0); // 서보모터를 0위치 이동
}
}