PDA

Visualizza la versione completa : [C++] Allarme arduino


InsanityVaas
24-05-2014, 12:14
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


int abilitazione=1,sensore1=2,sensore2=3,sensore3=4,se nsore4=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);
}
}
}

oregon
24-05-2014, 13:33
E questa "abilitazione" cosa sarebbe? Come è collegata al sistema? Dove compare nel codice?

InsanityVaas
24-05-2014, 17:29
E questa "abilitazione" cosa sarebbe? Come è collegata al sistema? Dove compare nel codice?

L' abilitazione non è altro che "il pulsante avvio dell' allarme", cioè quando esci di casa e schiacci il pulsante per mettere in funzione l' allarme nel caso in cui provi ad entrare.

oregon
24-05-2014, 17:32
Quindi nella prima if manca una else

void loop()
{
if(digitalRead(abilitazione)==HIGH)
{
...
}
else
digitalWrite(sirena,LOW);
}

Loading