#include <SPI.h> //SPI kütüphanemizi tanımlıyoruz.
#include <MFRC522.h> //MFRC522 kütüphanemizi tanımlıyoruz.
#include <Servo.h> //Servo kütüphanemizi tanımlıyoruz.
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,7,6,5,4,3);
#include<Keypad.h>
const byte satir = 4;
const byte sutun = 4;
char sifre[4] = {'*', '#', '1', '9'};
char sifre1[4];
char tus;
int i = 0;
char tus_takimi[4][3] = {
{'1', '2', '3'},
{'4', '5', '6'},
{'7', '8', '9'},
{'*', '0', '#'}
};
byte satir_pins[4] = {A5, A4, A3, A2};
byte sutun_pins[3] = {A1,A0, 8};
Keypad tuss_takimi = Keypad(makeKeymap(tus_takimi), satir_pins, sutun_pins, 4, 3);
int RST_PIN = 9; //RC522 modülü reset pinini tanımlıyoruz.
int SS_PIN = 10; //RC522 modülü chip select pinini tanımlıyoruz.
int servoPin = 8; //Servo motor pinini tanımlıyoruz.
Servo motor; //Servo motor için değişken oluşturuyoruz.
MFRC522 rfid(SS_PIN, RST_PIN); //RC522 modülü ayarlarını yapıyoruz.
byte ID[4] = {226,230,220,27}; //Yetkili kart ID'sini tanımlıyoruz.
byte IDb[4] = {190,36,173,202}; //Yetkili kart ID'sini tanımlıyoruz.
void setup() {
motor.attach(servoPin); //Servo motor pinini motor değişkeni ile ilişkilendiriyoruz.
Serial.begin(9600); //Seri haberleşmeyi başlatıyoruz.
SPI.begin(); //SPI iletişimini başlatıyoruz.
rfid.PCD_Init(); //RC522 modülünü başlatıyoruz.
lcd.begin(16, 2);
}
void loop() {
if ( ! rfid.PICC_IsNewCardPresent()) //Yeni kartın okunmasını bekliyoruz.
return;
if ( ! rfid.PICC_ReadCardSerial()) //Kart okunmadığı zaman bekliyoruz.
return;
if (
rfid.uid.uidByte[0] == IDb[0] && //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.
rfid.uid.uidByte[1] == IDb[1] &&
rfid.uid.uidByte[2] == IDb[2] &&
rfid.uid.uidByte[3] == IDb[3] or
rfid.uid.uidByte[0] == ID[0] && //Okunan kart ID'si ile ID değişkenini karşılaştırıyoruz.
rfid.uid.uidByte[1] == ID[1] &&
rfid.uid.uidByte[2] == ID[2] &&
rfid.uid.uidByte[3] == ID[3]
) {
tus = tuss_takimi.getKey();
if (tus)
{
sifre1[i++] = tus;
lcd.setCursor(0, 1);
lcd.print("*");
delay(100);
}
if (i == 4)
{ delay(200);
char sifre[4] = {'*', '#', '1', '9'};
if ((strncmp(sifre1, sifre, 4) == 0))
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SIFRE DOGRU!");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SIFREYI GIRINIZ"); //password :
i = 0;
}
else
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SIFRE YANLIS!!!");
delay(1000);
lcd.clear();
lcd.setCursor(0, 0) ;
lcd.print("SIFREYI GIRINIZ");
i = 0;
}
}
Serial.println("Kapi acildi");
ekranaYazdir();
motor.write(180); //Servo motoru 180 dereceye getiriyoruz.
delay(3000);
motor.write(0); //Servo motoru 0 dereceye getiriyoruz.
delay(1000);
}
else{ //Yetkisiz girişte içerideki komutlar çalıştırılır.
lcd.clear();
lcd.print("yetkisiz kart");
Serial.println("Yetkisiz Kart");
ekranaYazdir();
}
rfid.PICC_HaltA();
}
void ekranaYazdir(){
Serial.print("ID Numarasi: ");
for(int sayac = 0; sayac < 4; sayac++){
Serial.print(rfid.uid.uidByte[sayac]);
Serial.print(" ");
}
Serial.println("");
}