#include <TM1637.h>
TM1637 tm(0, 1);
int active = 0;
int8_t TimeDisp[] = {0,0,0,0};
void setup()
{
tm.init();
tm.set(BRIGHT_TYPICAL);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
}
void loop()
{
if(active == 0)
{
if(digitalRead(3) == LOW)
{
if(TimeDisp[2] == 5){if(TimeDisp[3] == 9){TimeDisp[2] = 0;TimeDisp[3] = 0;}else{TimeDisp[3]++;}}
else{if(TimeDisp[3] == 9){TimeDisp[2]++;TimeDisp[3] = 0;}else{TimeDisp[3]++;}}
tone(5, 600, 40);
delay(200);
}
if(digitalRead(2) == LOW)
{
if(TimeDisp[0] == 5){if(TimeDisp[1] == 9){TimeDisp[0] = 0;TimeDisp[1] = 0;}else{TimeDisp[1]++;}}
else{if(TimeDisp[1] == 9){TimeDisp[0]++;TimeDisp[1] = 0;}else{TimeDisp[1]++;}}
tone(5, 600, 40);
delay(200);
}
if(digitalRead(4) == LOW){active=1;tone(5, 600, 300);}
}
else
{
delay(1000);
if(TimeDisp[0] == 0 && TimeDisp[1] == 0 && TimeDisp[2] == 0 && TimeDisp[3] == 0)
{active = 0;tone(5, 3200, 30);delay(120);tone(5, 3200, 30);delay(120);tone(5, 3200, 30);delay(120);tone(5, 3200, 30);
OnTimeout();}
else if(TimeDisp[1] == 0 && TimeDisp[2] == 0 && TimeDisp[3] == 0)
{TimeDisp[0]--;TimeDisp[1] = 9;TimeDisp[2] = 5;TimeDisp[3] = 9;tone(5, 3000, 50);}
else if(TimeDisp[2] == 0 && TimeDisp[3] == 0)
{TimeDisp[1]--;TimeDisp[2] = 5;TimeDisp[3] = 9;tone(5, 3000, 50);}
else if(TimeDisp[3] == 0)
{TimeDisp[2]--;TimeDisp[3] = 9;tone(5, 3000, 50);}
else{TimeDisp[3]--;tone(5, 3000, 50);}
}
tm.display(TimeDisp);
}
void OnTimeout()
{
// Event on timeout;
}