unsigned long previousMillis = 0;
const long interval = 100;  // Interval setiap 1 detik (1000 milidetik)
int minutes1 = 0;  // Ubah sesuai kebutuhan awal countdown
int seconds1 = 10;
int milliseconds1 = 0;
boolean aktif;

const int ledPin = 13;  // Ubah pin LED sesuai kebutuhan Anda

void setup() {
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);  // Inisialisasi pin LED sebagai output
  aktif = true;
}

void loop() {
  // put your main code here, to run repeatedly:
  countdown(minutes1);  // Memanggil fungsi countdown dengan parameter
}

void countdown(int &minutes) {
  if ((millis() - previousMillis >= interval) && (aktif == true)) {
    printCountdown(minutes);  // Memanggil fungsi printCountdown dengan parameter
    previousMillis = millis();

    if (milliseconds1 > 0) {
      milliseconds1--;
    } else {
      if (seconds1 > 0) {
        seconds1--;
        milliseconds1 = 9;
      } else {
        if (minutes > 0) {
          minutes--;
          seconds1 = 59;
          milliseconds1 = 9;
        } else {
          resetCountdown();  // Memanggil fungsi resetCountdown saat hitungan selesai
          aktif = false;
        }
      }
    }
  }
}

void resetCountdown() {
  // Hitungan selesai, lakukan reset
  minutes1 = 1;  // Atur ulang sesuai kebutuhan awal countdown
  seconds1 = 0;
  milliseconds1 = 0;

  // Matikan LED setelah hitungan selesai
  digitalWrite(ledPin, LOW);
}

void printCountdown(int minutes) {
  Serial.print("Countdown: ");
  Serial.print(minutes);
  Serial.print("m ");
  Serial.print(seconds1);
  Serial.print("s ");
  Serial.print(milliseconds1);
  Serial.println("ms");
}