Lector de tarjeta RFID con SD card

Hola buenos días a todos. Estoy trabajando en un programa que lea tarjetas RFID y guárdalas en una tarjeta sd, básicamente para pasar lista en clase con una tarjeta. El punto que hice este dicho programa y no me lee la tarjeta sd.
Adjunto programa:

#include <SPI.h>
#include <MFRC522.h>
#include <SD.h>
File myFile;


#define RST_PIN	9    //Pin 9 para el reset del RC522
#define SS_PIN	10   //Pin 10 para el SS (SDA) del RC522
MFRC522 mfrc522(SS_PIN, RST_PIN); ///Creamos el objeto para el RC522

void setup() {
	Serial.begin(9600); //Iniciamos La comunicacion serial
	SPI.begin();        //Iniciamos el Bus SPI
	mfrc522.PCD_Init(); // Iniciamos el MFRC522
	Serial.println("Control de acceso:");
    Serial.print("Iniciando SD ...");
  if (!SD.begin(5)) {
    Serial.println("No se pudo inicializar");
    return;
  }
  Serial.println("inicializacion exitosa");
}

byte ActualUID[4]; //almacenará el código del Tag leído
byte Usuario1[4]= {0x73, 0x42, 0x85, 0xA7} ; //código del usuario 1 Pedro Pdrinhio
byte Usuario2[4]= {0xC1, 0x2F, 0xD6, 0x0E} ; //código del usuario 2

void loop() {
	// Revisamos si hay nuevas tarjetas  presentes
	if ( mfrc522.PICC_IsNewCardPresent()) 
        {  
  		//Seleccionamos una tarjeta
            if ( mfrc522.PICC_ReadCardSerial()) 
            {
                  // Enviamos serialemente su UID
                  Serial.print(F("Card UID:"));
                  for (byte i = 0; i < mfrc522.uid.size; i++) {
                          Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
                          Serial.print(mfrc522.uid.uidByte[i], HEX);   
                          ActualUID[i]=mfrc522.uid.uidByte[i];          
                  } 
                  Serial.print("     ");                 
                  //comparamos los UID para determinar si es uno de nuestros usuarios  
                  if(compareArray(ActualUID,Usuario1))
                    Serial.println("Acceso concedido...");
                   
                    
                  
                  else if(compareArray(ActualUID,Usuario2))
                    Serial.println("Acceso concedido...");
                  else
                    Serial.println("Acceso denegado...");
                  
                  // Terminamos la lectura de la tarjeta tarjeta  actual
                  mfrc522.PICC_HaltA();
          
            }
      
	}
	myFile = SD.open("datalog.csv", FILE_WRITE);//abrimos  el archivo
   if (myFile) { 
     int PedroPdrinhio  = Usuario1;
        Serial.print("Escribiendo SD: ");
        myFile.print(" Pedro Pdrinhio=");
        myFile.println(PedroPdrinhio );
     
       myFile.close(); //cerramos el archivo
       Serial.print(", Pedro Pdrinhio=");
        Serial.println(PedroPdrinhio );

   }
  else {
    Serial.println("Error al abrir el archivo");
  }
  delay(30000);
 
}


//Función para comparar dos vectores
 boolean compareArray(byte array1[],byte array2[])
{
  if(array1[0] != array2[0])return(false);
  if(array1[1] != array2[1])return(false);
  if(array1[2] != array2[2])return(false);
  if(array1[3] != array2[3])return(false);
  return(true);
}

Estoy totalmente seguro que me equivoque en algo del programa y le he dado varias vueltas y no consigo resolverlo, cualquier ayuda será bienvenida.
Muchas gracias de antemano y tengan buen día.

¿Podrías dar más información de qué arduino estás usando, esquema de conexiones, qué tarjeta SD, qué lector tarjeta SD, etc.? ¿qué error te da, si te da algún error? ¿cómo está formateada la SD? ...
Saludos.

Por supuesto, estoy utilizando un Arduino uno, el lector sd es el más común en usar en Arduino, y una microSD "Lerdisk" de 4GB FAT32.
El error básicamente que no me lee la tarjeta ni me la guarda, eso si, la tarjeta sd si que inicializa correctamente.
Adjunto foto de la conexión;

Puedes probar esto? a ver que te dice:
https://docs.arduino.cc/learn/programming/sd-guide

#define RST_PIN	9

#define SS_PIN	10

if (!SD.begin(5))

Esta configuración no es la misma que en el esquema

¡@FernandoGarcia Tiene usted toda la razón! A la hora de cablear lo hice correctamente, solo me equivoque a la hora de dibujar el esquema, ¡Siento mucho las molestias!

Hola buenos días/tardes, escribo este tema ya que tengo un problema con dicha librería ya que no me lee las tarjetas rfid y quería saber si a vosotros/as os funciona, dicha librería es esta: https://github.com/makerspaceleiden/rfid
Por ejemplo utilizo este programa y no me detecta ni una RFID (Es un programa que lee tarjetas rfid, cabe recalcar que es un programa que encontré en internet con tutorial y funcionaba)

/*
 * Initial Author: ryand1011 (https://github.com/ryand1011)
 *
 * Reads data written by a program such as "rfid_write_personal_data.ino"
 *
 * See: https://github.com/miguelbalboa/rfid/tree/master/examples/rfid_write_personal_data
 *
 * Uses MIFARE RFID card using RFID-RC522 reader
 * Uses MFRC522 - Library
 * -----------------------------------------------------------------------------------------
 *             MFRC522      Arduino       Arduino   Arduino    Arduino          Arduino
 *             Reader/PCD   Uno/101       Mega      Nano v3    Leonardo/Micro   Pro Micro
 * Signal      Pin          Pin           Pin       Pin        Pin              Pin
 * -----------------------------------------------------------------------------------------
 * RST/Reset   RST          9             5         D9         RESET/ICSP-5     RST
 * SPI SS      SDA(SS)      10            53        D10        10               10
 * SPI MOSI    MOSI         11 / ICSP-4   51        D11        ICSP-4           16
 * SPI MISO    MISO         12 / ICSP-1   50        D12        ICSP-1           14
 * SPI SCK     SCK          13 / ICSP-3   52        D13        ICSP-3           15
*/

#include <SPI.h>
#include <MFRC522.h>

#define RST_PIN         2           // Configurable, see typical pin layout above
#define SS_PIN          10          // Configurable, see typical pin layout above

MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance

//*****************************************************************************************//
void setup() {
  Serial.begin(9600);                                           // Initialize serial communications with the PC
  SPI.begin();                                                  // Init SPI bus
  mfrc522.PCD_Init();                                              // Init MFRC522 card
  Serial.println(F("Read personal data on a MIFARE PICC:"));    //shows in serial that it is ready to read
}

//*****************************************************************************************//
void loop() {

  // Prepare key - all keys are set to FFFFFFFFFFFFh at chip delivery from the factory.
  MFRC522::MIFARE_Key key;
  for (byte i = 0; i < 6; i++) key.keyByte[i] = 0xFF;

  //some variables we need
  byte block;
  byte len;
  MFRC522::StatusCode status;

  //-------------------------------------------

  // Reset the loop if no new card present on the sensor/reader. This saves the entire process when idle.
  if ( ! mfrc522.PICC_IsNewCardPresent()) {
    return;
  }

  // Select one of the cards
  if ( ! mfrc522.PICC_ReadCardSerial()) {
    return;
  }

  Serial.println(F("**Card Detected:**"));

  //-------------------------------------------

  mfrc522.PICC_DumpDetailsToSerial(&(mfrc522.uid)); //dump some details about the card

  //mfrc522.PICC_DumpToSerial(&(mfrc522.uid));      //uncomment this to see all blocks in hex

  //-------------------------------------------

  Serial.print(F("Name: "));

  byte buffer1[18];

  block = 4;
  len = 18;

  //------------------------------------------- GET FIRST NAME
  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 4, &key, &(mfrc522.uid)); //line 834 of MFRC522.cpp file
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer1, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  //PRINT FIRST NAME
  for (uint8_t i = 0; i < 16; i++)
  {
    if (buffer1[i] != 32)
    {
      Serial.write(buffer1[i]);
    }
  }
  Serial.print(" ");

  //---------------------------------------- GET LAST NAME

  byte buffer2[18];
  block = 1;

  status = mfrc522.PCD_Authenticate(MFRC522::PICC_CMD_MF_AUTH_KEY_A, 1, &key, &(mfrc522.uid)); //line 834
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Authentication failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  status = mfrc522.MIFARE_Read(block, buffer2, &len);
  if (status != MFRC522::STATUS_OK) {
    Serial.print(F("Reading failed: "));
    Serial.println(mfrc522.GetStatusCodeName(status));
    return;
  }

  //PRINT LAST NAME
  for (uint8_t i = 0; i < 16; i++) {
    Serial.write(buffer2[i] );
  }


  //----------------------------------------

  Serial.println(F("\n**End Reading**\n"));

  delay(1000); //change value if you want to read cards faster

  mfrc522.PICC_HaltA();
  mfrc522.PCD_StopCrypto1();
}
//*****************************************************************************************//

Adjunto esquema de conexión;


Muchas gracias anticipadas.

Probaste con otra librería?

Dos dudas:

Primera, en el primer esquema ¿por qué la resistencia de 330 ohms en MISO?

Segunda, y más importante, ¿seguro que el módulo RFID es compatible con 5V?

Porque hay alguna interferencia entre RFID y SD. Entonces se necesita la resistencia

No lo es, pero en internet solo puedes encontrar fácilmente este tipo de conexión.

Lo correcto seria usar un "level shifter".

Debería ser más o menos así.

No conocía ese detalle porque no he usado módulos lectores de RFID aún y me llamó la atención.

Yo ya lo sé, por eso lo pregunté y me gustaría saber la respuesta del PO para descartar que haya malogrado el lector.

Yo creo que puede ser problema de la librería que uso ya que probé de todo y no me funciona correctamente. No se si a vosotros sabréis como chequearlo.
Dicha librería es esta:

https://github.com/makerspaceleiden/rfid

Prueba:

Estaba utilizando también esa librería y me parece impresionante que no me funciona ni los ejemplos de este. Y pongo todos los pins correctos. ¿Estos casos son comunes?

Consigue otro lector porque creo que ese se arruinó o vino fallado (hay muchos de pésima calidad e incluso falsos).