중급⏱ 예상 시간: 35분📝 5단계
릴레이 타이머 스위치
버튼을 누르면 릴레이가 설정된 시간만큼 ON되었다가 자동으로 OFF되는 타이머 스위치를 만듭니다.
🧩 필요한 모듈
Arduino Uno
브레드보드
택트 스위치 (버튼)
피에조 부저
점퍼 와이어
LED
릴레이 모듈
저항 (220Ω / 10kΩ)
📖 단계별 설명서
1단계준비물 확인
다음 부품들을 준비해주세요:
- Arduino Uno 1개
- 브레드보드 1개
- 점퍼 와이어 8개
- 릴레이 모듈 1개
- 택트 스위치 2개 (시작/시간설정)
- LED 1개 (릴레이 상태 표시)
- 피에조 부저 1개
- 220Ω 저항 1개, 10kΩ 저항 2개
2단계회로 연결하기
- 릴레이 모듈의 IN을 D7에, VCC를 5V, GND를 GND에 연결합니다.
- 시작 버튼을 D2에 연결합니다 (풀다운 저항 연결).
- 시간 설정 버튼을 D3에 연결합니다 (풀다운 저항 연결).
- LED를 220Ω 저항을 통해 D13에 연결합니다.
- 부저를 D8에 연결합니다.
📐 회로도
회로도 이미지
/images/projects/relay-timer-circuit.png
💡 팁: 릴레이의 COM, NO, NC 단자에는 고전압 장치를 연결할 수 있지만, 이 프로젝트에서는 LED로만 테스트합니다. 고전압은 위험하니 주의하세요!
3단계코드 작성하기
code.ino
const int RELAY = 7;
const int BTN_START = 2;
const int BTN_SET = 3;
const int LED_PIN = 13;
const int BUZZER = 8;
int timerSeconds = 10; // 기본 10초
bool timerRunning = false;
unsigned long timerStart = 0;
void setup() {
pinMode(RELAY, OUTPUT);
pinMode(BTN_START, INPUT);
pinMode(BTN_SET, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(BUZZER, OUTPUT);
digitalWrite(RELAY, LOW);
Serial.begin(9600);
Serial.println("Timer Switch Ready");
Serial.print("Time: ");
Serial.print(timerSeconds);
Serial.println("s");
}
void loop() {
// 시간 설정 버튼: 10초씩 증가 (최대 60초)
if (digitalRead(BTN_SET) == HIGH && !timerRunning) {
timerSeconds += 10;
if (timerSeconds > 60) timerSeconds = 10;
Serial.print("Time set: ");
Serial.print(timerSeconds);
Serial.println("s");
tone(BUZZER, 2000, 50);
delay(300);
}
// 시작 버튼
if (digitalRead(BTN_START) == HIGH && !timerRunning) {
timerRunning = true;
timerStart = millis();
digitalWrite(RELAY, HIGH);
digitalWrite(LED_PIN, HIGH);
tone(BUZZER, 1000, 200);
Serial.println("Timer ON!");
}
// 타이머 종료 체크
if (timerRunning) {
unsigned long elapsed = (millis() - timerStart) / 1000;
if (elapsed >= (unsigned long)timerSeconds) {
timerRunning = false;
digitalWrite(RELAY, LOW);
digitalWrite(LED_PIN, LOW);
// 종료 알림음
for (int i = 0; i < 3; i++) {
tone(BUZZER, 1500, 150);
delay(250);
}
Serial.println("Timer OFF!");
}
}
delay(50);
}+47 줄 더 보기
4단계업로드 및 테스트
- 코드를 업로드합니다.
- 시리얼 모니터를 열어 현재 설정 시간을 확인합니다.
- 설정 버튼을 눌러 시간을 변경합니다 (10초 → 20초 → ... → 60초 → 10초).
- 시작 버튼을 누르면 릴레이가 ON되고 LED가 켜집니다.
- 설정 시간이 지나면 자동으로 OFF되고 부저 알림이 울립니다.
5단계심화 — LCD 카운트다운 표시
LCD를 추가하면 남은 시간을 실시간으로 카운트다운 표시할 수 있습니다.