#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27, 20, 4); // Alamat I2C dan ukuran LCD

unsigned long waktuMulai; // Variabel untuk menyimpan waktu awal

void setup() {
  lcd.begin(20, 4); // Inisialisasi LCD
  lcd.backlight(); // Nyalakan backlight
  lcd.clear(); // Bersihkan layar
}

void loop() {
  lcd.clear();
  int angka1 = random(10, 20);
  int angka2 = random(10, 20);

  lcd.setCursor(0,0);
  lcd.print(angka1);
  lcd.print(" x ");
  lcd.print(angka2);
  lcd.print(" = ");

  int jawaban = Serial.parseInt();
  int jawaban_benar = angka1 * angka2;
  
  waktuMulai = millis(); // Ambil waktu awal

  for (int i = 9; i >= 0; i--) {
    while ((millis() - waktuMulai) <= 1000) {
      if (Serial.available()) {
        

        if (jawaban == jawaban_benar) {
          lcd.clear(); // Bersihkan layar jika jawaban benar
          lcd.print("Jawaban Anda benar!");
          delay(1000);
          return; // Mengakhiri loop dan memulai soal baru
        } else {
          lcd.clear(); // Bersihkan layar jika jawaban salah
          lcd.print("Jawaban Anda salah.");
          break; // Keluar dari loop jika jawaban salah
        }
      }
    }

    // Tampilkan sisa waktu di LCD
    lcd.setCursor(0,1);
    lcd.print("Sisa waktu: ");
    lcd.print(i);
    delay(1000); // Tunggu sebentar sebelum mengulang
  }

  // Tampilkan pesan jika waktu habis
  lcd.clear(); // Bersihkan layar jika waktu habis
  lcd.print(jawaban_benar);

  delay(1000); // Tunggu sebentar sebelum mengulang
}
uno:A5.2
uno:A4.2
uno:AREF
uno:GND.1
uno:13
uno:12
uno:11
uno:10
uno:9
uno:8
uno:7
uno:6
uno:5
uno:4
uno:3
uno:2
uno:1
uno:0
uno:IOREF
uno:RESET
uno:3.3V
uno:5V
uno:GND.2
uno:GND.3
uno:VIN
uno:A0
uno:A1
uno:A2
uno:A3
uno:A4
uno:A5
led1:A
led1:C
led2:A
led2:C
lcd2:GND
lcd2:VCC
lcd2:SDA
lcd2:SCL