Arduino'da çift güvenlikli kapı kilidi yapmak istiyorum

Bu konuyu okuyanlar

tahir alpay

Öğrenci
Katılım
13 Kas 2019
Mesajlar
1
Reaksiyon puanı
0
Puanları
1
Yaş
22
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("");
}
 
Son düzenleyen moderatör:
Üst