// 핀 번호 정의
const int buttonPin = 2; // 버튼 스위치 핀 번호
const int relayPin = 3; // 릴레이 신호 핀 번호
// 디바운싱 변수 및 상수 설정
const unsigned long debounceDelay = 50; // 디바운싱 딜레이 시간 (밀리초)
unsigned long lastDebounceTime = 0; // 마지막 디바운싱 시간
int buttonState = HIGH; // 현재 버튼 상태
int lastButtonState = HIGH; // 이전 버튼 상태
// 릴레이 상태 변수 초기화
int relayState = HIGH;
void setup() {
pinMode(buttonPin, INPUT_PULLUP); // 내부 풀업 저항 사용하여 버튼 스위치 설정
pinMode(relayPin, OUTPUT); // 릴레이 신호 핀 설정
}
void loop() {
// 버튼 디바운싱 처리
int reading = digitalRead(buttonPin);
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
// 디바운싱 시간이 경과하면 버튼 상태 업데이트
if (reading != buttonState) {
buttonState = reading;
// 버튼이 눌렸을 때
if (buttonState == LOW) {
// 릴레이 상태를 토글
relayState = !relayState;
digitalWrite(relayPin, relayState); // 릴레이 상태 업데이트
}
}
}
lastButtonState = reading;
}