본문 바로가기

아두이노

버튼과 서보 모터로 문 열고 닫기 제어

반응형

버튼과 서보 모터를 사용하여 문을 열고 닫는 아두이노 프로젝트를 만들어보겠습니다. 이 프로젝트에서는 버튼을 누를 때마다 서보 모터가 문을 열거나 닫을 것입니다.

1. 이론 소개:

  • 이 프로젝트에서는 버튼을 누르면 서보 모터가 특정 각도로 회전하여 문을 열거나 닫게 됩니다.

2. 준비물:

  • 아두이노 보드 (예: Arduino Uno)
  • 서보 모터
  • 푸시 버튼 스위치
  • 브레드보드
  • 점퍼 와이어 (메스-메스 및 메스-피스)
  • USB 케이블 (아두이노 보드와 컴퓨터 연결용)

3. 비슷한 모델:

  • 다양한 종류의 서보 모터와 버튼을 사용할 수 있습니다.

4. 추천 보드 및 간단한 설명:

  • Arduino Uno: 초보자 및 중급자에게 적합한 아두이노 보드로 다양한 라이브러리와 예제가 있습니다.

5. 회로 구성:

  • 버튼과 서보 모터를 아두이노에 연결합니다.

6. 코딩 내용 (주석 포함):

 

#include <Servo.h>

Servo doorServo; // 서보 모터 객체 생성
int buttonPin = 2; // 버튼 핀
int buttonState = 0; // 버튼 상태 변수
int lastButtonState = 0; // 이전 버튼 상태 변수
int angle = 0; // 서보 모터 각도 변수

void setup() {
  doorServo.attach(9); // 서보 모터를 9번 핀에 연결
  pinMode(buttonPin, INPUT); // 버튼을 입력 모드로 설정
}

void loop() {
  buttonState = digitalRead(buttonPin); // 버튼 상태 읽기

  if (buttonState != lastButtonState) { // 버튼 상태가 변경될 때
    if (buttonState == HIGH) { // 버튼이 눌리면
      if (angle == 0) {
        openDoor(); // 문 열기
      } else {
        closeDoor(); // 문 닫기
      }
    }
    delay(50); // 디바운스를 위한 지연
  }

  lastButtonState = buttonState; // 버튼 상태 업데이트
}

void openDoor() {
  doorServo.write(90); // 서보 모터를 90도로 회전 (문 열기)
  angle = 90; // 각도 업데이트
}

void closeDoor() {
  doorServo.write(0); // 서보 모터를 0도로 회전 (문 닫기)
  angle = 0; // 각도 업데이트
}

 

7. 코딩 내용 설명:

  • 버튼 상태를 감지하여 서보 모터를 특정 각도로 회전하여 문을 열거나 닫습니다.

8. 코드 업로드 및 테스트:

  • 아두이노 보드를 컴퓨터에 연결하고 위의 코드를 아두이노 IDE에 복사하여 업로드합니다.
  • 버튼을 눌러서 문이 열리고 닫히는지 확인합니다.

9. 응용 업그레이드:

  • 서보 모터의 각도와 동작 패턴을 수정하여 프로젝트를 확장할 수 있습니다.

10. 전문용어 설명:

- 서보 모터 (Servo Motor): 특정 각도로 정밀하게 회전하는 모터로, 일정한 위치로 회전하여 동작합니다.

 

11. 기타: - 서보 모터의 최대 각도와 회전 속도를 고려하여 코드를 수정할 수 있습니다.

반응형