switch(currentMode) {
case MODE_IDLE:
if (resetButtonPressed) Reset();
if (resetButtonLongPressed) currentMode = MODE_SETUP;
if (startStopButtonPressed) {
currentMode = (currentMode == MODE_IDLE) ? MODE_RUNNING : MODE_IDLE;
if (currentMode == MODE_RUNNING) startTime = now();
}
break;
case MODE_SETUP:
// 설정 모드 로직: 데이터 선택, 값 증감, 저장 후 IDLE 복귀
break;
case MODE_RUNNING:
if (startStopButtonPressed) currentMode = MODE_IDLE;
if (resetButtonPressed) { Reset(); currentMode = MODE_IDLE; }
break;
case MODE_RINGING:
if (anyButtonPressed) currentMode = MODE_IDLE;
break;
}
시간 관리 및 부저 제어
case MODE_RUNNING:
currentTime = setupTime - (now() - startTime);
if (currentTime <= 0) currentMode = MODE_RINGING;
break;
case MODE_RINGING:
analogWrite(buzzerPin, 20); delay(20);
analogWrite(buzzerPin, 0); delay(40); // 비프음 패턴
break;
LCD 표시 관리
각 모드별로 적절한 문자열과 시간 정보를 16x2 LCD에 출력합니다. 실행 모드에서는 00:00:00 형식으로 카운트다운을 표시합니다.