RFID to Control LED

I've placed 4 print commands, printing the numbers 1 through 4, at every point where the LED changes state.
The digitalWrite to turn on the LED upon scanning, where I placed the command to print "2", works as intended.

However, for the 2nd tap, depending on the duration between the 1st and 2nd taps, the numbers "1" and "3" are printed. "1" appears when the duration between both taps is more than 3 seconds. "3" appears when the duration is less than 3 seconds.

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


#define PN532_SCK  (2)
#define PN532_MOSI (3)
#define PN532_SS   (4)
#define PN532_MISO (5)


#define LED 13  // LED connected to pin 13


// Defining pins for I2C for shield
#define PN532_IRQ   (2)
#define PN532_RESET (3)  // Not connected by default on the NFC Shield


// For breakout/shield with I2C connection:
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);


// Declaring last recorded time (previousMillis) and latest recorded time (currentMillis)
unsigned long previousMillis = 0;
unsigned long currentMillis = millis(); // millis() is a timer function


void setup(void) {

  pinMode(LED, OUTPUT); // Declare the LED as an output
  
  Serial.begin(115200); // Baud rate
  while (!Serial) delay(10); 


  nfc.begin();

  // Shield detection
  uint32_t versiondata = nfc.getFirmwareVersion(); 
  if (! versiondata) {  // If board not connected or wrong board
    Serial.print("Didn't find PN53x board");  
    while (1); // halt
  }
  // If board connected
  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.setPassiveActivationRetries(0x9A);
  nfc.SAMConfig();

  // Standby mode
  Serial.println("Waiting for an ISO14443A Card ...");
}



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)



  if ((digitalRead(LED) == 1) && (currentMillis - previousMillis >= 3000)) {
    digitalWrite(LED, 0); // OR Off after 2 minutes
    Serial.print("1");
  }

  // 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, &uidLength);



  
  if (success) {
    nfc.PrintHex(uid, uidLength); // Displays ID of card/tag
    Serial.println("");
    
    if (uidLength == 4) {

      // Card ID
      uint8_t keya[6] = { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF };


      currentMillis = millis(); // Defining current time. Timer starts here
            
      // Turn LED on for 1st RFID key
      if ((digitalRead(LED) == 0) && (uid[0] == 0x33) && (uid[1] == 0x06) && (uid[2] == 0x64) && (uid[3] == 0x97)) {  // ID: 0x33 0x06 0x64 0x97
        previousMillis = currentMillis;
        digitalWrite(LED, 1); // Turn the LED on
        Serial.print("2");
      }
      else if ((digitalRead(LED) == 1) && (currentMillis - previousMillis >= 1000) && (currentMillis - previousMillis < 3000) && (uid[0] == 0x33) && (uid[1] == 0x06) && (uid[2] == 0x64) && (uid[3] == 0x97)) {
        digitalWrite(LED, 0); // Tap again within 2 minutes to off
        Serial.print("3");
      }


      
    // Start with block 4 (the first block of sector 1) cos sector 0 contains manufacturer data
      success = nfc.mifareclassic_AuthenticateBlock(uid, uidLength, 4, 0, keya);
    
      if (success)  {
        uint8_t data[16];
    
        // Reading the contents of block 4
        success = nfc.mifareclassic_ReadDataBlock(4, data);
    
        if (success)
        {
          delay(1000);
        }
      }
    }
  }
}