tahir alpay
Üye
- Katılım
- 13 Kas 2019
- Mesajlar
- 5
- Puanları
- 1
- Yaş
- 26
merhabalar çift güvenlikli kapı kilidi yapmak istiyorum rfid'yi onayladıktan sonra kaypad üzerinden şifre istesin benden onuda onayladıktan sonra kapıyı açsın bir taslak kod hazırladım ama kartı onayladıktan sonra şifreyi sormuyor taslak aşağıda.
Kod:
#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("");
}