#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x3F, 20, 4); // Alamat I2C dan ukuran LCD 20x4
const int merahLED = 9; // Pin LED merah
const int hijauLED = 10; // Pin LED hijau
const int durasiSoal = 20000; // Durasi soal dalam milidetik (20 detik)
const int ROW_NUM = 4; // jumlah baris keypad
const int COLUMN_NUM = 4; // jumlah kolom keypad
char keys[ROW_NUM][COLUMN_NUM] = {
{'1','2','3','A'},
{'4','5','6','B'},
{'7','8','9','C'},
{'*','0','#','D'}
};
byte pin_rows[ROW_NUM] = {9, 8, 7, 6}; // sambungkan ke pin baris keypad
byte pin_column[COLUMN_NUM] = {5, 4, 3, 2}; // sambungkan ke pin kolom keypad
Keypad keypad = Keypad(makeKeymap(keys), pin_rows, pin_column, ROW_NUM, COLUMN_NUM);
int level = 1; // Tambahkan ini untuk mengatasi masalah level yang tidak dideklarasikan
void setup() {
lcd.begin(20, 4); // Inisialisasi LCD
pinMode(merahLED, OUTPUT);
pinMode(hijauLED, OUTPUT);
}
void loop() {
int num1 = random(1, pow(10, level)); // Angka pertama (1 hingga 10^level)
int num2 = random(1, pow(10, level)); // Angka kedua (1 hingga 10^level)
int operasi = random(4); // 0: +, 1: -, 2: *, 3: /
lcd.clear(); // Bersihkan tampilan LCD
lcd.print(num1);
switch(operasi) {
case 0: lcd.print(" + "); break;
case 1: lcd.print(" - "); break;
case 2: lcd.print(" * "); break;
case 3: lcd.print(" / "); break;
}
lcd.print(num2);
int jawabanBenar;
switch(operasi) {
case 0: jawabanBenar = num1 + num2; break;
case 1: jawabanBenar = num1 - num2; break;
case 2: jawabanBenar = num1 * num2; break;
case 3: jawabanBenar = num1 / num2; break;
}
unsigned long waktuMulai = millis(); // Ambil waktu mulai soal
while (millis() - waktuMulai < durasiSoal) {
char tombol = keypad.getKey(); // membaca tombol yang ditekan
if (tombol != NO_KEY) { // jika tombol ditekan
// Tambahkan tombol ke jawabanPengguna (mungkin perlu mengonversi dari karakter ke integer)
// ...
}
}
// Jika jawaban benar
// if (jawabanPengguna == jawabanBenar) {
// digitalWrite(hijauLED, HIGH);
// delay(1000); // Tahan LED hijau selama 1 detik
// digitalWrite(hijauLED, LOW);
// }
// else { // Jika jawaban salah
// digitalWrite(merahLED, HIGH);
// delay(1000); // Tahan LED merah selama 1 detik
// digitalWrite(merahLED, LOW);
// }
}
// Fungsi untuk membaca keypad
// (Anda perlu menambahkan kode ini menggunakan library Keypad)
// int bacaKeypad() {
// // ...
// }
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
lcd1:GND
lcd1:VCC
lcd1:SDA
lcd1:SCL
keypad1:R1
keypad1:R2
keypad1:R3
keypad1:R4
keypad1:C1
keypad1:C2
keypad1:C3
keypad1:C4
led1:A
led1:C
led2:A
led2:C