Using RFID and a SD card simultaneously


So I’m trying to record RFID values onto a SD card. I can get the RFID Shield and the SD card shield working if I load the example SD card or PN3xx sketches and use them one at a time. But when I start trying to put the programs together it can see the SD card but it cannot recognize the PN3xx chip. Both shields are from Adafruit and this is as far as I got in programming and I don’t understand why the Arduino UNO can’t see both. There are no conflicting pins that I can see. Could you please help me understand what’s happening?

Thank you!

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.h>
#include <SPI.h>
#include <SD.h>

// If using the breakout with SPI, define the pins for SPI communication.
#define PN532_SCK  (2)
#define PN532_MOSI (3)
#define PN532_SS   (4)
#define PN532_MISO (5)

// If using the breakout or shield with I2C, define just the pins connected
// to the IRQ and reset lines.  Use the values below (2, 3) for the shield!
#define PN532_IRQ   (2)
#define PN532_RESET (3)  // Not connected by default on the NFC Shield

Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);
const int chipSelect = 10;

void setup(void) {
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
  Serial.println("card initialized.");


  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt

  // configure board to read RFID tags

void loop(void) {
  boolean success;
  uint8_t uid[] = { 0, 0, 0, 0, 0, 0, 0 };	// Buffer to store the returned UID
  uint8_t uidLength;				// Length of the UID (4 or 7 bytes depending on ISO14443A card type)
  // Wait for an ISO14443A type cards (Mifare, etc.).  When one is found
  // 'uid' will be populated with the UID, and uidLength will indicate
  // if the uid is 4 bytes (Mifare Classic) or 7 bytes (Mifare Ultralight)
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, &uid[0], &uidLength);
  if (success) {
    for (uint8_t i=0; i < uidLength; i++) 
      Serial.print(uid[i], HEX); 
	// Wait 1 second before continuing
    // PN532 probably timed out waiting for a card
    Serial.println("Timed out waiting for a card");

Both shields are from Adafruit

But you didn't post any links to them, or the libraries. I'm going to guess that there is a pin conflict.