As short reply and a general note, there is the millis() function that will be faster than a delay(). It returns the number of milliseconds since the Arduino board began running the current program. You use maths to check if you've waited long enough.
Like this:
// check to see if it's time to do something; that is, if the
// difference between the current time and last time you blinked
// the LED is bigger than the interval at which you want to
// blink the LED.
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// do something after the waiting interval here
}