Witam, z góry przepraszam że rozpoczynam nowy temat, ale jestem tutaj nowy.
Otóż posiadam problem, utworzyłem program do bramy automatycznej, lecz do pełni szczęścia brakuje mi wizualizacji otwierania, chciałem wykorzystać do tego slider, ale jakoś nic mi nie wychodziło, wrzucam tutaj program i gdyby ktoś mógł pomoc będę wdzięczny
hej! Random number, jak nazwa wskazuje - wybiera liczby losowe. W Twoim przypadku przydałoby się wartości zwiększać/zmniejszać o stałą wartość, przykładowo o 1. Polecam w tym przypadku shift register, oraz bloczek inkrementacji;)
Dzięki za odpowiedź, ale prowadzący zajęcia powiedział, że mam to zrobić używając timeouta w pętli event nie bardzo wiem jak, także dodałem program żebyście mogli zobaczyć co i jak i w razie czego pomóc
Ustaw do Time out w strukturze event czas powiedzmy 250ms (czyli 1/4 sekundy). I wtedy w strukturze event przy evencie Timeout po prostu inkrementuj wartosc Twojego slidera np o 1.
Jak dalej nie bedziesz sobie mogl poradzic wrzuc kod w wersji 13 to pomoge.
Gdy wszyscy wiedzą, że coś jest niemożliwe, przychodzi ktoś, kto o tym nie wie, i to robi...
zrobiłem jak napisałeś, lecz wtedy cała brama otwiera się w jednym momencie, a tu chodzi o to żeby powoli się otwierała przez 15 sekund jak i w ten sam sposób się zamykała powoli, w ogóle teraz zauważyłem, że jakoś dziwnie się wiesza program, a żeby włączyć trzeba 2 razy nacisnąć przycisk i nie wiem dlaczego, wysyłam w wersji 13 i będę wdzięczny jeśli zerkniesz co może być nie tak
Bylo niezle ale jednak nie do konca chyba zrozumiales Timeout.
Timeout w strukturze Event dziala tak ze jezeli w okreslonym czasie nic innego sie nie wydarzy czyli u nas 250ms, zaden inny event nie zostanie wywolany petla while wykona to co znajduje sie w strukturze Timeout i tak za kazdym razem.
Wiec jezeli chcesz otwierac brame przez 15s (mniej wiecej to jest bo jeszcze musimy doliczyc czas wyoknywania sie programu) to przy naszych 250ms jest 60 probek (4 probki na 1s). Za kazdym timeoutem w zaleznosci od tego co bylo na pilocie wcisniete zamykasz lub otwierasz brame, wiec zwiekszasz jej wartosc +1 lub zmniejszasz o -1 i tak do konca przedzialu naszego. Wczesniej miales podlaczona wartosc slidera do Timeout czyli to 250 i dlatego od razu ladowalo Ci wartosc 250 do niego a przy U8 reprezentacji czyli 8 bitowej liczby daje maximum 256 i to nie bylo ok.
Teraz wartosc bramy jest czytana z Local variable i inkrementowana lub dekremontowana.
Dodalem jeszcze warunki ze jezeli brama jest otwarta czyli jesli slider ma wartosc =60 to wraca do stanu bezczynnosci i jak jest calkowicie zamknieta czyli slider = 0.
Nie wiem po co Boolean controlki krancowki dlatego tego nie ruszalem. Jak cos nie jasne postaram sie pomoc.
teraz wszystko jasne, wielkie dzięki za wytłumaczenie ;) aczkolwiek zastanawiam się dlaczego teraz nie działa mi string na panelu frontowym kiedy wcisnę otwieranie nie wyświetla się to, a krańcówki miały być jako zabezpieczenie dodatkowe, że albo po upływie 15s albo po wciśnięciu krańcówki, plus bez sygnału z krańcówki nie będzie możliwość otwierania czy zamykania bramy
Chwile posiedziałem i już wiem czemu stringi nie łapały i poprawiłem, ale tak się zastanawiam czy skoro teraz jest wszystko robione za pomocą czasu czy warto w to mieszać krańcówki jako dodatkowe zabezpieczenie.
+ jeśli dobrze myślę to w obecnej chwili dodatkowe pętle case w otwieraniu i zamykaniu są mi niepotrzebne tak? ( jeśli nie używam krańcówek)
Nie warto mieszac krancowek Twoich poniewaz i tak zrobione jest zabezpieczenie w postaci sprawdzania ilosci probek jesli osiagnie 60 to brama zamknieta i koniec, jesli 0 otwarta i tez koniec, krancowki moga Ci posluzyc np jako informacja ze brama jest calkowicie zamknieta lub otwarta moga sie one zapalac.
Te structury (nie petle) case dodatkowe nie potrzebne.
Gdy wszyscy wiedzą, że coś jest niemożliwe, przychodzi ktoś, kto o tym nie wie, i to robi...