Как выполнить действие, если обнаружено два UID RFID-метки?

Я использую RFID-RC522 и хочу напечатать в серийный номер текстовую строку, если за определенный период времени были прочитаны две метки RFID.

По сути это:
1. Первый тег прочитан (распечатка в серийный номер: тег 1 прочитан)
2. Подождите 2 секунды
3. Второй тег прочитан (печать в серийный номер: тег 2 прочитан)
4. Печать в серийный номер: тег 1 и тег 2 прочитаны)
5. Бонус: сохраняйте это состояние, а затем при нажатии кнопки (печать в серийный номер: тег 1 и тег 2 завершены)

Я знаю, как прочитать UID и распечатать серийный номер, если он прочитан. Огромное спасибо за вашу помощь, это очень ценно.

Вот мой код:

#include <Adafruit_GFX.h>    // Базовая графическая библиотека
#include <Adafruit_ST7735.h> // Аппаратная библиотека
#include <SPI.h>
#include <MFRC522.h>

// Для пробоя можно использовать любые 2 или 3 контакта
// Эти контакты также подойдут для экрана TFT 1,8 дюйма.
#define sclk 4  // SainSmart: SCL
#define mosi 5  // SainSmart: SDA
#define cs   6  // SainSmart: CS
#define dc   7  // SainSmart: RS/DC
#define rst  8  // SainSmart: RES

Adafruit_ST7735 tft = Adafruit_ST7735(cs, dc, mosi, sclk, rst);

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);


float p = 3.1415926;

void setup(void) {
  Serial.begin(9600);
  SPI.begin();
  Serial.print("Starting cornhole leaderboard...");
  mfrc522.PCD_Init(); // Инициализация карты MFRC522
  Serial.println("Scan PICC to see UID and type...");
  // Используйте этот инициализатор, если вы используете 1,8-дюймовый TFT-дисплей
  tft.initR(INITR_BLACKTAB);   // инициализируем чип ST7735S, черная вкладка

  // Используйте этот инициализатор (раскомментируйте), если вы используете 1,44-дюймовый TFT
  //tft.initR(INITR_144GREENTAB); // инициализируем чип ST7735S, черная вкладка

  Serial.println("Initialized");

  uint16_t time = millis();
  tft.fillScreen(ST7735_BLACK);
  time = millis() - time;

  Serial.println(time, DEC);

  // большой блок текста
  tft.fillScreen(ST7735_BLACK);
}

void loop() {

  // Ищем новые карты
    if ( ! mfrc522.PICC_IsNewCardPresent()) {
        return;
    }

    // Выбираем одну из карт
    if ( ! mfrc522.PICC_ReadCardSerial()) {
        return;
    }

    if (mfrc522.uid.uidByte[0] == 0xA4 && 
       mfrc522.uid.uidByte[1] == 0xB8 &&
       mfrc522.uid.uidByte[2] == 0xB8 &&
       mfrc522.uid.uidByte[3] == 0x96) {
          Serial.println("Nate has checked in to the game.");
          tft.fillScreen(ST7735_BLUE);
          tft.setTextSize(2);
          tft.setCursor(0, 0);
          tft.setTextColor(ST7735_YELLOW);
          tft.print("Nate ");
          tft.setTextColor(ST7735_WHITE);
          tft.println("has checked in ");
          tft.setTextSize(2);
          tft.println("to the game.");
          delay(2000);
          tft.fillScreen(ST7735_BLACK);
    }

    if (mfrc522.uid.uidByte[0] == 0x03 && 
       mfrc522.uid.uidByte[1] == 0xFD &&
       mfrc522.uid.uidByte[2] == 0xBC &&
       mfrc522.uid.uidByte[3] == 0x02) {
          Serial.println("Ted has checked in to the game.");
          tft.fillScreen(ST7735_RED);
          tft.setTextSize(2);
          tft.setCursor(0, 0);
          tft.setTextColor(ST7735_CYAN);
          tft.print("Ted ");
          tft.setTextColor(ST7735_WHITE);
          tft.println("has checked in ");
          tft.setTextSize(2);
          tft.println("to the game.");
          delay(2000);
          tft.fillScreen(ST7735_BLACK);

    }


}

, 👍0