Witam,
jestem początkującym programującym i tworzę pewną wizualizację w języku C i napotkałem pewien problem, a mianowicie przy przełączaniu z pracy automatycznej na ręczną dalej wykonywana jest jedna funkcja (tylko przy spadku wartości o1 o 5) a mianowicie p1==1 gdzie w tym wypadku chciałbym aby była JEDNORAZOWO wykonana funkcja p1=0. Jest to w chwili przełączenia z pracy automatycznej na ręczną i wtedy chciałbym aby zawór p1 przyjął wartość równą 0 ale w dalszej pracy nie podtrzymywał tej wartości.
p1 to zawór
wybordan1 to przełącznik między pracą manualną a automatyczną
o1 to zbiornik (napełnianie lub zmniejszanie ilości cieczy)
{PRACA RĘCZNA}
IF p1==1 AND wybordan1==0 AND o1>0 THEN
o1=o1 - 5;
ENDIF;
IF o1<0 THEN
o1=0;
ENDIF;
IF o1==0 THEN
p1=0;
ENDIF;
{PRACA AUTOMATYCZNA}
IF p1==1 AND wybordan1==1 AND o1>0 THEN
o1=o1 - 5;
ENDIF;
IF o1>75 AND wybordan1==1 THEN
p1=1;
ENDIF;
IF o1<20 AND wybordan1==1 THEN
p1=0;
ENDIF;
IF p1==0 AND wybordan1==1 THEN
o1=o1 + 5;
ENDIF;
Problem występuje tylko, gdy wartość o1 jest zmniejszana o 5 a ja chcę w tym momencie przejść do pracy manualnej to dalej wykonywana jest funkcja zmniejszania o 5 aż do osiągnięcia 0. A chciałbym żeby przy przełączeniu wyburdan1 (czyli z pracy automatycznej na ręczną lub odwrotnie) jednorazowo otrzymać wartość p1=0 ale żeby nie była ona podtrzymywana tylko wykonywana przy przełączeniu.
Moim pomysłem było
IF wybordan1==0 THEN
p1=0;
ENDIF;
Ale wtedy przy wybordan1==0 czyli pracy ręcznej ciągle jest p1=0 a ja chcę żeby tylko RAZ zostało to wykonane.
Dodam tylko że to jest skrypt, który jest powtarzany co 1000ms.
Dziękuję za odp