#include <TM1637Display.h>
#define rel 2
#define start 3
#define reset 4
//#define set 7
#define decr 8
#define incr 9
#define DIO 5
#define CLK 6
int sec,mins,buffer;
TM1637Display display(CLK, DIO);
void setup()
{
pinMode(rel, OUTPUT);
pinMode(start, INPUT_PULLUP);
pinMode(reset, INPUT_PULLUP);
//pinMode(set, INPUT_PULLUP);
pinMode(incr, INPUT_PULLUP);
pinMode(decr, INPUT_PULLUP);
display.setBrightness(0x0f);
display.showNumberDecEx(mins, 0b01000000, true,2,0);
display.showNumberDecEx(sec, 0b01000000, true,2,2);
}
void loop()
{
if(digitalRead(start)==0)
{
sec=0;
digitalWrite(rel,0);
timer();
}
if(digitalRead(reset)==0)
{
mins=buffer;
sec=0;
digitalWrite(rel, LOW);
display.showNumberDecEx(mins, 0b01000000, true,2,0);
display.showNumberDecEx(sec, 0b01000000, true,2,2);
delay(300);
}
if(digitalRead(incr)==0)
{
mins++;
delay(200);
display.showNumberDecEx(mins, 0b01000000, true,2,0);
buffer=mins;
}
if(digitalRead(decr)==0)
{
mins--;
delay(200);
display.showNumberDecEx(mins, 0b01000000, true,2,0);
buffer=mins;
}
delay(50);
}
void timer()
{
while(1)
{
display.showNumberDecEx(mins, 0b01000000, true,2,0);
display.showNumberDecEx(sec, 0b01000000, true,2,2);
if(digitalRead(reset)==0)
{
mins=buffer;
sec=0;
digitalWrite(rel, LOW);
display.showNumberDecEx(mins, 0b01000000, true,2,0);
display.showNumberDecEx(sec, 0b01000000, true,2,2);
return;
}
delay(1000);
if(sec==0)
{
sec=60;
mins--;
if(mins==-1)
{
digitalWrite(rel, HIGH);
tone(10,1000);
delay(2000);
noTone(10);
mins=buffer;
sec--;
return;
}
}
sec--;
}
}