Try this and note the differences
void loop() {
reading = digitalRead(buttonPin);
if (reading != preState) {
lastDebounceTime = millis();
preState = reading;
}
if ((millis() - lastDebounceTime) > debounceDelay) {
Serial.println("delay finished");
if(reading == LOW){
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
delay(500);
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
}
Edit, forgot to change currstate to prestate