// 1S/1 RFID

// 1S/5 SERVO

// 1S/12 RGB

// 2S/1 5V

// 2S/2 3.3V

 

#include <Deneyap_Servo.h>       //ServoESP32 kütüphanesini tanımlıyoruz.

#include <MFRC522.h>     //MFRC522 kütüphanesini tanımlıyoruz.

#include <SPI.h>         //SPI kütüphanesini tanımlıyoruz.

#define RED D14        //Kırmızı LED D14 pinine bağlı

#define BLUE D13      //Mavi LED D13 pinine bağlı

#define GREEN D15        //Yeşil LED D15 pinine bağlı

#define RST_PIN A4       //RC522 modülü reset pini A4'e bağlı

#define SDA_PIN A5       //RC522 modülü chip select pini A5'e bağlı

Servo servo1;            //Servoyu servo1 olarak tanımlıyoruz

int derece;              //derece adında değişken tanımlıyotuz

int deger;               //deger adında değişken tanımlıyotuz

 

MFRC522 rfid(SDA_PIN, RST_PIN);  //RC522 modülü ayarlarını yapılır.

byte ID[4] = {144, 110, 3, 32};   //Yetkili kartın ID'si

void setup() {

  Serial.begin(115200);  //Seri haberleşme başlatılır.

  servo1.attach(D9);

  SPI.begin();           //SPI iletişimi başlatılır.

  rfid.PCD_Init();       //RC522 modülü başlatılır.

  pinMode(RED,OUTPUT);   //LED'ler çıkış olarak ayarlanır

  pinMode(BLUE,OUTPUT);

  pinMode(GREEN,OUTPUT);

  Serial.println("çalışii");

}

void loop() {;

  if (!rfid.PICC_IsNewCardPresent()) //Yeni kartın okunması beklenir

    {

      BEKLE();  //Kart okutulmazsa Mavi LED yanar

      Serial.println("maviled");

      delay(500);

      return;

    }

   

  if (!rfid.PICC_ReadCardSerial())  //Kart okunmadığı zaman beklenilir

  {

      BEKLE();  //Kart okutulmazsa Mavi LED yanar

      Serial.println("maviled2");

      delay(500);

      return;

  }

  if (rfid.uid.uidByte[0] == ID[0] &&  //Okunan kart ID'si ile ID

      rfid.uid.uidByte[1] == ID[1] &&  //değişkeni karşılaştırılır

      rfid.uid.uidByte[2] == ID[2] &&

      rfid.uid.uidByte[3] == ID[3]) {

      Serial.println("DOGRU");

      DOGRU();    //Okutulan kart doğruysa Yesil LED yanar

      delay(500);

  }

  else {    //Okutulan kart yanlışsa bu blok çalışır

      Serial.println("YANLIS");

      YANLIS();     //Okutulan kart yanlışsa Kırmızı LED yanar

      ID_OGREN();   //Seri port ekranında kartın ID'si yazılır.

      delay(500);

  }

  rfid.PICC_HaltA();

}

void BEKLE() {

      digitalWrite(BLUE,HIGH);

      digitalWrite(RED,LOW);

      digitalWrite(GREEN,LOW);}

void DOGRU() {

      digitalWrite(BLUE,LOW);

      digitalWrite(RED,LOW);

      digitalWrite(GREEN,HIGH);

     

      servo1.write(180);

      Serial.println("Kapı Açık");

      delay(500);

      servo1.write(0);

      Serial.println("Kapı Kapalı");}

void YANLIS() {

      digitalWrite(BLUE,LOW);

      digitalWrite(RED,HIGH);

      digitalWrite(GREEN,LOW);}

void ID_OGREN() {

      Serial.print("ID Numarasi: ");

      for (int sayac = 0; sayac < 4; sayac++) {

      Serial.print(rfid.uid.uidByte[sayac]);

      Serial.print(" ");}

      Serial.println("");}