NFC with arduino

I'm trying to make the code recognize the card and print to the serial monitor when done so but there's nothing coming through. I'm still new to Arduino so any help would be appreciated

(Code at the very bottom)

#include <Wire.h>
#include <SPI.h>
#include <Adafruit_PN532.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) 
// Use this line for a breakout with a SPI connection:
Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS);

//int String cardId = ;

void setup(void) {

  Serial.begin(115200);
  pinMode(LED_BUILTIN, OUTPUT);
  nfc.begin();

  uint32_t versiondata = nfc.getFirmwareVersion();
  if (! versiondata) {
    Serial.print("Didn't find PN53x board");
    while (1); // halt
  }
  // Got ok data, print it out!
  Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); 
  Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); 
  Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
}


void loop(void) {
  uint8_t 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)
    
  success = nfc.readPassiveTargetID(PN532_MIFARE_ISO14443A, uid, &uidLength);
  
  if (success) {
    // Display some basic information about the card
    Serial.print(uidLength, HEX);
    nfc.PrintHex(uid, uidLength);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(400);
    digitalWrite(LED_BUILTIN, LOW);
//    Serial.println("");
      if (uidLength == "40xAA 0x77 0x05 0xBF") Serial.print("Card accepted");


  }
}

Can you tell us which Arduino you are using ?

And provide a bit more detail on the problem, 'there's nothing coming through' wont mean much to the forum.

how did you wire stuff ? (and what "stuff")?
did you open the Serial monitor at 115200 bauds?

if this is the length (that is the value 4 or 7)  uint8_t uidLength;                        // Length of the UID (4 or 7 bytes depending on ISO14443A card type)why do you think you can compare it with a string that way

 if (uidLength == "40xAA 0x77 0x05 0xBF") Serial.print("Card accepted");

it just does not make any sense... The code will be in the uid array

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.