#define TIMER 10 // タイマー時間(秒)
#define HALF_TIMER 5
#define SOON_TIMER 3
#define SW_PIN A5 // スイッチ接続端子
#define SW_OFF 1 // スイッチOFFのdigitalReadの値
#define LED_PIN 12 // LED接続端子
#define LED_ON_INTERVAL 50 // LEDを点灯する時間
#define LED_OFF_INTERVAL 950 // LEDを消灯する時間
#define FULL_LED 8
#define HALF_LED 6
#define SOON_LED 4
#define SPEAKER_PIN A0 // スピーカー接続端子
#define ALARM_TONE 1760 // アラーム音の周波数
#define ALARM_COUNT 3 // アラームを鳴らす回数
void setup() {
// put your setup code here, to run once:
pinMode(LED_PIN, OUTPUT);
pinMode(FULL_LED, OUTPUT);
pinMode(HALF_LED, OUTPUT);
pinMode(SOON_LED, OUTPUT);
pinMode(SW_PIN, INPUT_PULLUP);
}
void loop() {
while (digitalRead(SW_PIN) == SW_OFF) {
}
digitalWrite(FULL_LED, HIGH);
for (int i = 0; i < TIMER; i++) {
int nokori = TIMER - i;
if (nokori == HALF_TIMER ) {
digitalWrite(FULL_LED, LOW);
digitalWrite(HALF_LED, HIGH);
}
if (nokori == SOON_TIMER) {
digitalWrite(HALF_LED, LOW);
digitalWrite(SOON_TIMER, HIGH);
}
if (nokori <= SOON_TIMER) {
tone(A0, 1760);
digitalWrite(LED_PIN, HIGH);
delay(LED_ON_INTERVAL);
noTone(A0);
digitalWrite(LED_PIN, LOW);
delay(LED_OFF_INTERVAL);
} else {
digitalWrite(LED_PIN, HIGH);
delay(LED_ON_INTERVAL);
digitalWrite(LED_PIN, LOW);
delay(LED_OFF_INTERVAL);
}
}
digitalWrite(LED_PIN, HIGH);
for (int i = 0; i < ALARM_COUNT; i++) {
tone(SPEAKER_PIN, ALARM_TONE);
delay(60);
noTone(SPEAKER_PIN);
delay(60);
tone(SPEAKER_PIN, ALARM_TONE);
delay(60);
noTone(SPEAKER_PIN);
delay(60);
tone(SPEAKER_PIN, ALARM_TONE);
delay(120);
noTone(SPEAKER_PIN);
delay(1000);
}
digitalWrite(LED_PIN, LOW);
}