아두이노 기초 수업

푸쉬버튼으로 전원 스위치 역할 만들기

SwMaker_Jun 2025. 6. 9. 13:54
728x90
반응형

출처 : 메카솔루션

 

 

푸쉬버튼 모듈을 위 그림과 같이 디지털 3번에 연결 

360도 서보모터 디지털 7번에 연결

#include <Servo.h>  // 서보모터를 제어하기 위한 라이브러리 포함

int button = 3;        // 버튼을 연결한 핀 번호 (디지털 3번)
int mode = 0;          // 버튼을 누를 때마다 바뀌는 변수
int servoPin = 7;      // 서보모터를 연결한 핀 번호 (디지털 7번)

Servo myServo;         // 서보모터 객체 생성

void setup() {
  Serial.begin(9600);         // 시리얼 통신 시작 (속도: 9600bps)
  myServo.attach(servoPin);   // 서보모터를 지정한 핀에 연결
  myServo.write(90);          // 서보모터를 정지 상태(90도)로 설정  [정지]
  pinMode(button, INPUT);     // 버튼 핀을 입력 모드로 설정
}

void loop() {
  int a = digitalRead(button);   // 버튼의 현재 상태를 읽어서 변수 a에 저장

  // 버튼이 눌렸을 때 (a == 0 : 버튼이 눌리면 LOW 신호가 들어옴)
  if (a == 0) {
    mode = mode + 1;             // mode 값을 1 증가시켜 상태를 바꿈
    delay(500);                  // 너무 빠르게 눌리는 것을 방지 (디바운싱)
  }

  Serial.println(mode);          // 현재 mode 값을 시리얼 모니터에 출력

  // mode가 짝수일 때 (정지 상태)
  if (mode % 2 == 0) {
    myServo.write(90);           // 서보모터를 정지 위치(90도)로 설정
  } 
  // mode가 홀수일 때 (회전 상태)
  else {
    myServo.write(180);          // 서보모터를 회전 위치(180도)로 설정
  }
}

 

푸쉬버튼을 누를때 마다 mode 값은 1씩 증가하고 

그 값을 2로 나눈 나머지가 0 또는 1 인 조건에 따라 서보모터 제어 

 

 

 

 

728x90
반응형