2. 2개의 푸시버튼을 이용하여 서보모터 제어하기
페이지 정보
작성자 관리자 댓글 1건 조회 5,311회 작성일 18-10-28 15:53본문
 
푸시버튼1을 눌렀을 경우에 90으로 이동하고, 푸시버튼2를 눌렸을 경우 180으로 이동한다. 만약 푸시버튼을 놓을 경우 다시 0으로 이동한다.
푸시퍼튼1은 디지털 핀 2번, 푸시버튼2의 경우 디지털 핀 6번에 연결하고, 서보모터는 디지털 핀 9번에 연결한다.
(1) 회로도 구성

(2) 소스코딩


(3) 실행 결과
실행하고, 버튼1을 눌렀을 때 90도 회전하고, 버튼2를 눌렀을 때 180도 회전을 하게 된다.

시리얼모니터를 통해 회전할 때의 값을 출력하여 결과를 확인할 수 있다.
댓글목록
관리자님의 댓글
관리자 작성일
                                #include <Servo.h>
int pos = 0; // 서보모터의 위치 값 변수 선언
int button = 2;
int button_2 = 6;
Servo servo_9 ; // 서보모터 선언
int state = 0; // 버튼의 상태 값 변수 선언
void setup()
{
  servo_9.attach(9);   // 서보모터를 9번 핀으로 선언
  pinMode(button, INPUT);
  pinMode(button_2, INPUT);
  Serial.begin(9600);
}
void loop()
{
  int ipush = digitalRead(button);
  int ipush_2 = digitalRead(button_2);
  
  if(ipush == HIGH) {
    state = 1;
  } else if(ipush_2 == HIGH) {
    state = 2;
  } else {
    state = 0;
  }
  switch(state) {
    case 0 : 
      servo_9.write(0);
      break;
    case 1 :
      for(pos = 0; pos <= 90; pos += 1) {
        servo_9.write(pos); 
        // 서보모터를 pos값 만큼 위치이동
        Serial.print(pos);
        Serial.print(" , ");
        delay(15);
      }
      Serial.println("");
      for(pos=90; pos >= 0 ; pos -= 1) {
        servo_9.write(pos); 
        Serial.print(pos);
        Serial.print(" , ");
        delay(15);
      }
      break;
 	case 2 :
      for(pos = 0; pos <= 180; pos += 1) {
        servo_9.write(pos); 
        Serial.print(pos);
        Serial.print(" , ");
        delay(15);
      }
      Serial.println("");
      for(pos=180; pos >= 0 ; pos -= 1) {
        servo_9.write(pos); 
        Serial.print(pos);
        Serial.print(" , ");
        delay(15);
      }
      break;
    defalut :
      servo_9.write(0);
      break;
  }
}            
