Ciao a tutti, sto tentando di programmare un allarme con arduino ed ho riscontrato qualche difficoltà.
In sostanza il programma funziona, il fatto è che se ad esempio la sirena sta suonando perchè appunto uno dei sensori è on ed io stacco improvvisamente l' abilitazione anche la sirena dovrebbe staccarsi immediatamente, ma non lo fa.
Che ciclo potrei utilizzare?

Spero di essermi spiegato bene, grazie a tutti in anticipo

Vi posto il codice sotto

codice:
int abilitazione=1,sensore1=2,sensore2=3,sensore3=4,sensore4=5,sirena=13,i;
void setup()
{
  pinMode(abilitazione,INPUT);
  pinMode(sensore1,INPUT);
  pinMode(sensore2,INPUT);
  pinMode(sensore3,INPUT);
  pinMode(sensore4,INPUT);
  pinMode(sirena,OUTPUT);
}
void loop()
{
  if(digitalRead(abilitazione)==HIGH)
  {
    if(digitalRead(sensore1)==HIGH)
    {
      i=0;
      while((i<20)&&(digitalRead(abilitazione)==HIGH))
      {
        delay(500);
        i++;
        if(i==20)
        {
          digitalWrite(sirena,HIGH);
          delay(5000);
          digitalWrite(sirena,LOW);
        }
    if(digitalRead(sensore2)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
    if(digitalRead(sensore3)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
    if(digitalRead(sensore4)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
      }
    }
    if(digitalRead(sensore2)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
    if(digitalRead(sensore3)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
    if(digitalRead(sensore4)==HIGH)
    {
      digitalWrite(sirena,HIGH);
      delay(5000);
      digitalWrite(sirena,LOW);
    }
  }
}