Problema antifurto

Una cosa così fatta al volo non potrebbe andare :

const int SensorePorta           = A1;
const int PulsanteOnOff          = A2;
int Allarme = 0;
int Sirena = 0;
  
void setup() {
  
  pinMode(SensorePorta, INPUT);     // pin on off allarme
  pinMode(PulsanteOnOff, INPUT);    // pin sensore porta
  

}

void loop() {

  // se il sensore rileva qualcosa e l'allarme e attivato  
  if ((analogRead(SensorePorta) >= 1000) || ( Allarme == 1)){
   
    TempoSirena();
    
  }
  // se premo il pulsante per l'allarme controllo lo stato di esso e lo cambio
  if ( analogRead(PulsanteOnOff) >= 1000 ){
   if ( Allarme == 1){
      // disattivo l'allarme
      Allarme = 0;
      // disativo la sirena
      Sirena = 0;
   }else{ 
      TempoAttivazione();
   } 
  }
}

void TempoAttivazione(){
  int ms = 30000;
  int refreshms = 250;
  for (int i = 1; i <= 30000 / refreshms ; i++){
    ms -= refreshms;    
    delay(refreshms);
    if (i == 30000 / refreshms)
    {
      //operazioni da eseguire alla fine del countdown
      ms = 30000;
      Allarme = 1;
    }   
  }    
}

void TempoSirena(){
  int ms = 30000;
  int refreshms = 250;
  for (int i = 1; i <= 30000 / refreshms ; i++){
    ms -= refreshms;    
    delay(refreshms);
    if (i == 30000 / refreshms)
    {
      //operazioni da eseguire alla fine del countdown
      ms = 30000;
      Sirena = 1 ; 
    }   
  }    
}