Chicharra con censor, puerta de acceso a edificio.

Hola, tengo un proyecto en el que quiero poner un modulo en la puerta de un edificio. La idea es que al pasar los 3 segundos de que esté la puerta abierta, empieze a sonar una chicharra para que la cierren.

Lo voy a hacer con un censor magnético, y un busher. Este es el código que estoy usando, se activa la chicharra al abrir la puerta, pero no deja de sonar al cerrarla. Cual puede ser la falla?
El pin 4 es a donde va el positivo de la chicharra y el pin 7 es donde llega la señal del censor.

int censor=0;
int aa=0;

void setup() {
  pinMode(4, OUTPUT);
  pinMode(7, INPUT);
}

void loop() {
  censor = digitalRead(7);
  

  if (censor == HIGH) { //aca si le llega la señal del censor NC y no suena la chicharra
    digitalWrite(4, LOW);
    aa=0;
  }
  if (censor == LOW){
    aa=1;
    while (aa = 1)
    {
        for (int x=0; x<3; x++) {
        digitalWrite(4, HIGH);
        delay(150);
        digitalWrite(4, LOW);
        delay(100);
          if (censor == HIGH){/// con esta linea se tendría que apagar teoricamente cambiando el valor de aa
          digitalWrite(4, LOW);
          aa=0;
          }
        }
   }
  }
}

Desde ya muchisimas gracias.

Cambiá el

while ( aa=1)

por

while(aa==1)

Un solo signo = indica asignación, dos signos == indica comparación

Ya hice ese arreglo... A pesar de esto, el código sigue con problemas.
Si inicia con el sensor en 0 (puerta abierta), se mantiene sonando la chicharra a pesar de que cierre la puerta.
Si inicia con el sensor en 1 (puerta cerrada), se mantiene en silencio la chicharra a pesar de que la cierre.

No se en que parte puede estar el error... Se debe quedar clavado en alguna parte supongo yo, no?

sin entrar en el codigo,has puesto resistencia pulldown en la entrada del sensor?

Mostrá como tenés conectado el circuito