//COUNTDOWN TIMER
#define start 12
#define stop 11
unsigned long setTime = 10;
unsigned long startTime =0;
unsigned long lastPress = 0;
unsigned long lastCount = 0;
bool timerState = 0;
void setup() {
Serial.begin(115200);
pinMode(start, INPUT);
pinMode(stop, INPUT);
setTime = minToMilisec(setTime);
Serial.println(setTime);
}
void loop() {
// put your main code here, to run repeatedly:
if(digitalRead(start) == 1 && millis() - lastPress > 500){
lastPress = millis();
if(startTime == 0){
startTime = millis();
}
timerState = 1;
}
if(digitalRead(stop) == 1 && millis() - lastPress > 500){
lastPress = millis();
switch(timerState){
case 0:
startTime = 0;
break;
case 1:
timerState = 0;
}
}
switch(timerState){
case 1:
runCountDown();
}
}
void runCountDown(){
unsigned long currentCount = (millis() - startTime)/1000;
if(currentCount != lastCount && millis() - lastCount >= 900){
lastCount = currentCount;
if(millis() - startTime < setTime && (millis() - startTime) % 1000 == 0){
lastCount = millis() - startTime;
String timeDisplay;
int time = (setTime - (millis() - startTime))/1000;
int seconds = 0;
int minutes = 0;
while(time >= 60){
time = time - 60;
minutes ++;
}
seconds = time;
if(seconds < 10){
timeDisplay = String(minutes) + ":0" + String(seconds);
} else {
timeDisplay = String(minutes) + ":" + String(seconds);
}
Serial.println(timeDisplay);
} else if(millis() - startTime >= setTime){
startTime = 0;
}
}
}
unsigned long minToMilisec(unsigned long timeIn){
unsigned long timeOut = timeIn *1000*60;
return timeOut;
}