#include <Keypad.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
#define I2C_ADDR 0x27
#define LCD_COLUMNS 20
#define LCD_LINES 4
LiquidCrystal_I2C lcd(I2C_ADDR, LCD_COLUMNS, LCD_LINES);
Servo myservo;
const uint8_t ROWS = 4;
const uint8_t COLS = 4;
char keys[ROWS][COLS] = {
{ '1', '2', '3', 'A' },
{ '4', '5', '6', 'B' },
{ '7', '8', '9', 'C' },
{ '*', '0', '#', 'D' }
};
uint8_t colPins[COLS] = { 5, 4, 3, 2 }; // Pins connected to C1, C2, C3, C4
uint8_t rowPins[ROWS] = { 9, 8, 7, 6 }; // Pins connected to R1, R2, R3, R4
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
String sifre = "1234";
String girilenSifre = "";
String daireNo = "";
bool aKontrol = false;
bool bKontrol = false;
void anaEkran()
{
lcd.setCursor(0,0);
lcd.print("Sifre girisi <<A>>");
lcd.setCursor(0,2);
lcd.print("Zil calmak <<B>>");
}
void ekranTemizlemeA()
{
lcd.setCursor(0,0);
lcd.print("Sifre gir ve <<D>>");
lcd.setCursor(0,1);
lcd.print("Sifre : ");
lcd.setCursor(0,3);
lcd.print("Zil calmak <<B>>");
}
void ekranTemizlemeB()
{
lcd.setCursor(0,0);
lcd.print("Daire no gir <<D>>");
lcd.setCursor(0,1);
lcd.print("Daire no : ");
lcd.setCursor(0,3);
lcd.print("Sifre girisi <<A>>");
}
void setup() {
Serial.begin(9600);
lcd.init();
lcd.backlight();
myservo.attach(10);
}
void loop() {
myservo.write(0);
char key = keypad.getKey();
//A EKRANI
if(key == 'A')
{
aKontrol = true;
lcd.clear();
girilenSifre = "";
}
if(!aKontrol)
{
if(!bKontrol)
anaEkran();
}
else{
ekranTemizlemeA();
if (key != NO_KEY) {
girilenSifre += key;
if(girilenSifre == "A")
girilenSifre = "";
lcd.setCursor(8,1);
lcd.print(girilenSifre);
}
if(key == 'D')
{
if(girilenSifre == "1234D")
{
lcd.setCursor(5,2);
lcd.print("SIFRE DOGRU");
myservo.write(180);
delay(2000);
girilenSifre="";
lcd.clear();
aKontrol = false;
anaEkran();
}
else
{
lcd.setCursor(5,2);
lcd.print("SIFRE YANLIS");
}
}
if(key == 'C')
{
lcd.clear();
girilenSifre = "";
ekranTemizlemeA();
}
if(key == 'B')
{
aKontrol = false;
daireNo = "";
}
}
//B EKRANI
if(key == 'B')
{
bKontrol = true;
lcd.clear();
daireNo = "";
}
if(!bKontrol)
{
if(!aKontrol)
anaEkran();
}
else
{
ekranTemizlemeB();
if (key != NO_KEY) {
daireNo += key;
if(daireNo == "B")
daireNo = "";
lcd.setCursor(12,1);
lcd.print(daireNo);
}
if(key == 'D')
{
if(daireNo == "1D")
{
lcd.setCursor(5,2);
lcd.print("Daire 1 zil");
tone(1, 262, 2000);
delay(2000);
daireNo = "";
lcd.clear();
bKontrol = false;
anaEkran();
}
else if(daireNo == "2D"){
lcd.setCursor(5,2);
lcd.print("Daire 2 zil");
tone(11, 262, 2000);
delay(2000);
daireNo = "";
lcd.clear();
bKontrol = false;
anaEkran();
}
else if(daireNo == "3D"){
lcd.setCursor(5,2);
lcd.print("Daire 2 zil");
tone(12, 262, 2000);
delay(2000);
daireNo = "";
lcd.clear();
bKontrol = false;
anaEkran();
}
else if(daireNo == "4D"){
lcd.setCursor(5,2);
lcd.print("Daire 4 zil");
tone(13, 262, 2000);
delay(2000);
daireNo = "";
lcd.clear();
bKontrol = false;
anaEkran();
}
else
{
lcd.setCursor(3,2);
lcd.print("HATALI DAIRE NO");
}
}
if(key == 'C')
{
lcd.clear();
daireNo = "";
ekranTemizlemeB();
}
if(key == 'A')
{
bKontrol = false;
aKontrol = true;
girilenSifre = "";
}
}
}