2. 2개의 푸시버튼을 이용하여 서보모터 제어하기
페이지 정보
작성자 관리자 댓글 1건 조회 3,919회 작성일 18-10-28 15:53본문
2. 2개의 푸시버튼을 이용하여 서보모터 제어하기
푸시버튼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;
}
}