Una salida intermitente progresivamente

Hola! Estoy haciendo una chicharra para poner en la puerta de un edificio. Logré el código para que se prenda al abrir el circuito del sensor magnetico de la puerta.
Solo necesito que sea INTERMITENTE de forma progresiva.
Este es el código muy simple, y ahora explico el problema que tuve.

int contacto=7;
int salida=4;
float a=0;

void setup() {
  pinMode(salida, OUTPUT);
  pinMode(contacto, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  
  if(digitalRead(contacto)==LOW){ ///esto es al abrirse la puerta
    delay (2500); /// da 2.5 segundos para cerrarla o empieza a sonar
    for(float a=0;a<5;a++){  //suena la chicharra con una pausa grande 5 veces, despues va incrementando
     if (digitalRead(contacto)==LOW){
      digitalWrite(salida, HIGH); 
      digitalWrite(LED_BUILTIN, HIGH);
      delay(250);
      digitalWrite(salida, LOW); 
      digitalWrite(LED_BUILTIN, LOW);
      delay(750);
      }
    }
    for(float a=5;a<5;a++){  //en teoria aca empieza a sonar mas deprisa, cosa que no hace
     if (digitalRead(contacto)==LOW){
      digitalWrite(salida, HIGH); 
      digitalWrite(LED_BUILTIN, HIGH);
      delay(500);
      digitalWrite(salida, LOW); 
      digitalWrite(LED_BUILTIN, LOW);
      delay(750);
      }
    }
    for(float a=10;a<10;a++){
     if (digitalRead(contacto)==LOW){
      digitalWrite(salida, HIGH); 
      digitalWrite(LED_BUILTIN, HIGH);
      delay(500);
      }
    }
  }else{
    digitalWrite(salida, LOW);
    digitalWrite(LED_BUILTIN, LOW);
  }
}

Este es el problema: al sonar los 5 beeps, pasan 2.5 segundos sin sonar, y vuelve a la primera parte. Osea que no pasa a la siguiente parte donde suenan beeps más largos, sino que se reinicia todo.
Como puedo hacer para solucionarlo? Para que vaya incrementando el beep hasta ser permanente.

Desde ya muchas gracias, si no se entiende, por favor díganme e intento aclararlo.

Encontré una solución, dejo el post con el codigo para quien le haga falta.
Si a alguien se le ocurre algo para mejorarlo, bienvenido sea.

int contacto=7;
int salida=4;
int toneVal;
float a=1;

void setup() {
  pinMode(salida, OUTPUT);
  pinMode(contacto, INPUT);
  pinMode(LED_BUILTIN, OUTPUT);
  Serial.begin(9600);
}

void loop() {

  if(digitalRead(contacto)==LOW){
    delay (2500);
    while((a<5)&&(digitalRead(contacto)==LOW)){
      digitalWrite(LED_BUILTIN, HIGH);
      a=a+1;
      Serial.println("ON");
      digitalWrite(salida, HIGH);
      delay(500);
      digitalWrite(LED_BUILTIN, LOW);
      Serial.println("Off");
      digitalWrite(salida, LOW);
      delay(500);
      Serial.println(a);
    }
    while((a>4)&&(digitalRead(contacto)==LOW)){
      digitalWrite(LED_BUILTIN, HIGH);
      digitalWrite(salida, HIGH);
      a=a+1;
      Serial.println("L");
      Serial.println(a);
    }
  }else{
    digitalWrite(salida, LOW);
    digitalWrite(LED_BUILTIN, LOW);
    a=1;
  }
}