 unsigned long accumulator(void) {
 	unsigned long startTime, endTime = 0;
 	int lastPolltime = millis();
+	int pollCounter = 0;
 	int signalState;
 	int previousState;
 
 	while (1) {
-		// poll for card
-		getSerialNumber();
-		if(!getResponse(readData)) {
-			delay(cardTimeout);
+		// poll for card every second
+		if ((millis() - lastPolltime) >= pollInterval) {
+			getSerialNumber();
 			if(!getResponse(readData)) {
-				soundFeedback(reject);
-				Serial.println("Card not detected.");
-				return 0;
+				pollCounter += 1;
+				if(pollCounter == 4) {
+					soundFeedback(reject);
+					Serial.println("Card not detected.");
+					return 0;
+				}
 			}
+			lastPolltime = millis();
 		}
 
 		// read signal state
 		signalState = digitalRead(signalPin);
 		delay(debounce);
-
 		// debounce check
 		if(signalState == digitalRead(signalPin)) {
 			// check for new ON signal aka rising edge

				previousState = signalState;
			}
		}

	}
}
#include <SoftwareSerial.h>
#include "RFID.h"

SoftwareSerial RDM880(RDM880_RX, RDM880_TX);

const int ledPin = 13;
const int signalPin = 4;
const int speakerPin = 8;
const int quota = 3600;
const int pollInterval = 1000;
const bool reject = true;
