RC522 RFID Reader waiting for TAG, when I need Main Loop to run constantly

Thread Starter


Joined Oct 16, 2015
Main Loop worked great.

RFID read, write and display worked great.

Combined the two, and the RFID is waiting for a TAG to be read ... preventing the Main Loop from running constantly.

How can I have the RFID reader constantly available for new TAGs, yet keep my Main Loop running constantly?

Code below, RFID library that is called is attached:
void loop() {

    if ( ! mfrc522.PICC_IsNewCardPresent()) {           // Look for new RFID cards

        return; }

    if ( ! mfrc522.PICC_ReadCardSerial()) {             // Select one of the RFID cards

        return; }

    mfrc522.PICC_DumpToSerial(&(mfrc522.uid));          // Dump debug info about the card. PICC_HaltA() is automatically called.

  if (mfrc522.uid.uidByte[0] == 0x61) {                 //


  } else {



  Serial.println();                                     // Go to next line

  // read the state of the vibration sensor latch

  HITState = digitalRead(HITPin);     // vibration sensor latched ON by debounce circuitry?

                                      // if it is, the HITState is HIGH

  if (HITState == HIGH) {       

    digitalWrite(CLEARHITPin, HIGH);  // reset debounce circuitry

    delay(500);                       // wait for 1/2 second

    digitalWrite(CLEARHITPin, LOW);   // complete reset of debounce circuitry

  LEDS = LEDS-1;           // set LEDS variable for number of LEDs to light

  switch (LEDS) {          

    case 0:   

      analogWrite(BARGRAPHPin, 00);   // 0  LEDs ON


    case 1:   

      analogWrite(BARGRAPHPin, 13);   // 1  LED  ON     



  } else {


    delay(50);                       // wait for 0.05 second

Mod edit: Added code tags


Last edited by a moderator:


Joined Oct 29, 2013
Using interrupts is a great idea, and alternatively there might be a way to make a non-blocking read call to your device. Perhaps poll the device to see if data is waiting. You would have to see the docs for the device or its driver/library to determine this.