#include <ESP32Servo.h>
#include <SPI.h>
#include <MFRC522.h>
String card_uid="05fcf9d1";
String read_id;
MFRC522 rfid(/*SS_PIN*/ 5, /*RST_PIN*/ 22);
Servo myservo;

int light_sensor = 35;

String mfrc522_readID()
{
  String ret;
  if (rfid.PICC_IsNewCardPresent() && rfid.PICC_ReadCardSerial())
  {
    MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

    for (byte i = 0; i < rfid.uid.size; i++) {
      ret += (rfid.uid.uidByte[i] < 0x10 ? "0" : "");
      ret += String(rfid.uid.uidByte[i], HEX);
    }
  }
  // Halt PICC
  rfid.PICC_HaltA();

  // Stop encryption on PCD
  rfid.PCD_StopCrypto1();
  return ret;
}
void opendoor(){
  myservo.write(100);
  delay(1000);
  myservo.write(10);
}
void setup()
{
  myservo.attach(25);    //servo靽∟????訐5
  SPI.begin();
  rfid.PCD_Init();
  Serial.begin(115200);
  pinMode(light_sensor,INPUT);
}
void loop()
{
  read_id = mfrc522_readID();

  int Light =  analogRead(light_sensor);

  Serial.print("Light: ");
  Serial.println(Light);
  if (read_id != "") {
    Serial.print("RFID: ");
    Serial.println(read_id);
    

    if(read_id==card_uid){
      opendoor();
    }
    
  }

  if(Light>4000){
          opendoor();

  }
  delay(1000);
}