#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Keypad.h>
#define Bomb_Buzzer 2
#define Defuse_Buzzer 10
#define Red_Led 11
#define Yellow_Led 12
const byte ROWS = 4;
const byte COLS = 3;
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {9, 8, 7, 6}; // R1, R2, R3, R4
byte colPins[COLS] = {5, 4, 3}; // C1, C2, C3
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
pinMode(Bomb_Buzzer, OUTPUT);
pinMode(Defuse_Buzzer, OUTPUT);
pinMode(Red_Led, OUTPUT);
pinMode(Yellow_Led, OUTPUT);
digitalWrite(Bomb_Buzzer, LOW);
digitalWrite(Defuse_Buzzer, LOW);
digitalWrite(Red_Led, LOW);
digitalWrite(Yellow_Led, LOW);
}
void loop() {
digitalWrite(Yellow_Led, 1); delay(300); digitalWrite(Yellow_Led, 0); delay(650);
baslangic();
}
void baslangic() {
String girilenSifre = "";
String dogruSifre = "7355608";
int yildizSayisi = 7;
// İlk başta 7 tane * göster
lcd.clear();
for (int i = 0; i < yildizSayisi; i++) {
lcd.setCursor(i, 0);
lcd.print("*");
}
while (girilenSifre.length() < 7) {
char tus = keypad.getKey();
if (tus != NO_KEY && tus >= '0' && tus <= '9') {
girilenSifre += tus;
// Ekranda yazdırma işlemi: sağdan sola kayacak
for (int i = 0; i < yildizSayisi; i++) {
lcd.setCursor(i, 0);
if (i < yildizSayisi - girilenSifre.length()) {
lcd.print("*");
} else {
lcd.print(girilenSifre[i - (yildizSayisi - girilenSifre.length())]);
}
}
delay(200); // Giriş tuşu sonrası biraz bekleme
}
}
delay(500);
if (girilenSifre == dogruSifre) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Bomba Kuruluyor");
} else {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Yanlis Sifre!");
delay(1500);
}
}