#include <Wire.h>

byte jamSaatIni = 7;
byte menitSaatIni = 30;

void setup() {
  Serial.begin(9600);
  // Contoh untuk menambah 1 jam
  //tambahWaktu(1, 15);

  // Contoh untuk menambah 30 menit
  //tambahWaktu(1, 30);

  // Contoh untuk mengurangkan 1 jam
  kurangWaktu(0, 30);

  // Contoh untuk mengurangkan 15 menit
  //kurangWaktu(1, 15);

  delay(1000);
}

void loop() {

}

void tambahWaktu(byte jamTambahan, byte menitTambahan, byte &outJam, byte &outMenit) {
  jamSaatIni += jamTambahan;
  menitSaatIni += menitTambahan;

  // Jika menit melebihi 60, tambahkan ke jam dan atur kembali menit
  if (menitSaatIni >= 60) {
    menitSaatIni -= 60;
    jamSaatIni++;
  }

  // Jika jam melebihi 24, atur kembali ke 0
  if (jamSaatIni >= 24) {
    jamSaatIni -= 24;
  }

  tampilkanWaktu();
}

void kurangWaktu(byte jamPengurangan, byte menitPengurangan) {
  if (jamSaatIni >= jamPengurangan) {
    jamSaatIni -= jamPengurangan;
  } else {
    jamSaatIni = 24 - (jamPengurangan - jamSaatIni);
  }

  if (menitSaatIni >= menitPengurangan) {
    menitSaatIni -= menitPengurangan;
  } else {
    menitSaatIni = 60 - (menitPengurangan - menitSaatIni);
    jamSaatIni--;
  }

  tampilkanWaktu();
}

void tampilkanWaktu() {
  Serial.print("Waktu: ");
  Serial.print(jamSaatIni / 10); // Bagian puluhan jam
  Serial.print(jamSaatIni % 10); // Bagian satuan jam
  Serial.print(":");
  Serial.print(menitSaatIni / 10); // Bagian puluhan menit
  Serial.println(menitSaatIni % 10); // Bagian satuan menit
}