24-05-2018, 21:15
Witam ponownie. Niestety w dalszym ciągu mam problem a mianowicie niby wszystko działa okej. Ale po złożeniu i podłączeniu pod bramę mam problem którego nie umiem obejść mimo usilnych prób. A mianowicie program działa poprawnie z tym że gdy podawany jest impuls z bramy następuje rozbrojenie alarmu ale funkcja loop zdąży się wykonać po raz kolejny zanim kontrakton się rozłączy, tak mi się wydaje i całość alarmu ponownie się uzbraja powodując alarm. Co muszę poprawić w kodzie ktoś ma jakiś pomysł ? kombinacja z czasem opóźnienia też nie działa nie wiem ?
Kod:
void loop()
{
pinMode(kontrakton, INPUT_PULLUP);
pinMode(brama, INPUT_PULLUP);
kon = digitalRead(kontrakton);
bram = digitalRead(brama);
//while (bram == LOW)
if (uzbrojAlarm==false)
{
// uzbrojAlarm = false;
digitalWrite(6, LOW);
digitalWrite(5, LOW); //nic
digitalWrite(4, LOW);
// delay(2000);
}
while(uzbrojAlarm == true)
{
digitalWrite(6, HIGH);//zielonsa dioda
digitalWrite(5, LOW);
digitalWrite(4,LOW);
// delay(25);
if (uzbrojAlarm==true && kon==HIGH)
{
digitalWrite(6, LOW);
digitalWrite(5, LOW);
digitalWrite(4, HIGH) ; //czerwona dioda
// delay(25);
}
if (bram==HIGH)
{
uzbrojAlarm = false;
digitalWrite(6, LOW);
digitalWrite(5, HIGH); //żółta dioda
digitalWrite(4, LOW);
delay(2205);
}
break;
}
while (uzbrojAlarm==false)
{
if (kon==LOW && uzbrojAlarm==false)
{
uzbrojAlarm=true;
delay(25);
}
delay(50);
break;
}