Chyba nie rozumiem logiki tego projektu.
Funkcję counter() wywołujesz z loop i sprawdzasz czy minęła 1s od poprzedniej kontroli - oczywista sprawa.
Ale czemu w samej funkcji masz "for (timepassed=0; timepassed < countdown; timepassed++){" ?
countdown jest to ilość s do końca ale cykl pętli nie jest 1 s.
tak naprawdę
to
unsigned long countdown;
unsigned long timepassed;
są nie potrzebne.
if (timepassed == 0){ można zamienić na if((hours==0)&&(minutes ==0)&&(seconds==0)){
Funkcję counter() wywołujesz z loop i sprawdzasz czy minęła 1s od poprzedniej kontroli - oczywista sprawa.
Ale czemu w samej funkcji masz "for (timepassed=0; timepassed < countdown; timepassed++){" ?
countdown jest to ilość s do końca ale cykl pętli nie jest 1 s.
Kod:
void counter(){
unsigned long countdown;
unsigned long timepassed;
countdown=hours*3600+minutes*60+seconds*1;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// for (timepassed=0; timepassed < countdown; timepassed++){///<po co jest ta pętla? spróbuj bez niej.
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Remaining:");
lcd.setCursor(14,1);
lcd.print(seconds);
lcd.setCursor(13,1);
lcd.print(":");
lcd.setCursor(11,1);
lcd.print(minutes);
lcd.setCursor(10,1);
lcd.print(":");
lcd.setCursor(8,1);
lcd.print(hours);
//}
seconds--;
if (seconds < 0){
seconds=59;
minutes--;
}
if (minutes < 0){
minutes=59;
hours--;
}
}
if((hours==0)&&(minutes ==0)&&(seconds==0)){//if (timepassed == 0){
KaBoom();
}
Serial.println(timepassed);
//Serial.println(seconds);
}
to
unsigned long countdown;
unsigned long timepassed;
są nie potrzebne.
if (timepassed == 0){ można zamienić na if((hours==0)&&(minutes ==0)&&(seconds==0)){