const int ledHijau = 5; // Pin LED hijau
const int ledMerah = 8; // Pin LED merah
const int buzzerPin = 9; // Pin Buzzer
const int button1 = 11; // Tombol 1
const int button2 = 12; // Tombol 2
const int button3 = 13; // Tombol 3
int pinBenar[] = {1, 2, 3}; // Pin yang merupakan PIN benar
int pinSaatIni[] = {0, 0, 0}; // Inisialisasi PIN yang dimasukkan saat ini
int posisiPIN = 0; // Posisi saat ini dalam memasukkan PIN
void setup() {
pinMode(ledHijau, OUTPUT);
pinMode(ledMerah, OUTPUT);
pinMode(buzzerPin, OUTPUT);
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
pinMode(button3, INPUT_PULLUP);
Serial.begin(9600);
}
void loop() {
// Baca status tombol
int tombol1Status = digitalRead(button1);
int tombol2Status = digitalRead(button2);
int tombol3Status = digitalRead(button3);
// Cek tombol yang ditekan
if (tombol1Status == LOW) {
pinSaatIni[posisiPIN] = 1;
posisiPIN++;
delay(500); // Tunda sebentar agar tidak terdeteksi beberapa kali
}
if (tombol2Status == LOW) {
pinSaatIni[posisiPIN] = 2;
posisiPIN++;
delay(500);
}
if (tombol3Status == LOW) {
pinSaatIni[posisiPIN] = 3;
posisiPIN++;
delay(500);
}
// Cek apakah PIN yang dimasukkan sudah selesai
if (posisiPIN == 3) {
// Bandingkan PIN yang dimasukkan dengan PIN benar
bool pinBenarMasuk = true;
for (int i = 0; i < 3; i++) {
if (pinSaatIni[i] != pinBenar[i]) {
pinBenarMasuk = false;
break;
}
}
// Tindakan berdasarkan hasil perbandingan
if (pinBenarMasuk) {
digitalWrite(ledHijau, HIGH); // LED hijau menyala
digitalWrite(ledMerah, LOW); // LED merah mati
digitalWrite(buzzerPin, LOW); // Buzzer mati
Serial.println("PIN Benar!");
} else {
digitalWrite(ledHijau, LOW); // LED hijau mati
digitalWrite(ledMerah, HIGH); // LED merah menyala
digitalWrite(buzzerPin, HIGH); // Buzzer menyala
delay(1000); // Buzzer berbunyi selama 1 detik
digitalWrite(buzzerPin, LOW); // Matikan buzzer
posisiPIN = 0; // Setel ulang PIN saat ini
Serial.println("PIN Salah!");
}
}
}