#include <LiquidCrystal_I2C.h>
unsigned long start = millis();
unsigned int startMinutes = 1;
unsigned int startSeconds = 10;
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
lcd.init();
lcd.clear();
lcd.setCursor(0, 0);
}
void loop() {
timer(startMinutes, startSeconds);
}
void timer(int mins, int secs) {
static int seconds = secs + 1;
static int minutes = mins;
if (millis() - start >= 1000) {
lcd.clear();
seconds--;
char timeStr[6]; // 5 characters + null terminator
sprintf(timeStr,"%02u:%02u", minutes, seconds);
lcd.print(timeStr);
start = millis();
}
if ((seconds==0)&&(minutes>=1)){
minutes = minutes - 1;
seconds = 60;
}
if ((seconds==0)&&(minutes==0)){
minutes = mins;
seconds = secs+1;
}
}