Strona 1 z 1

On/Off na zegarze problem

: 18 gru 2014 02:03
autor: pritu
Witam
Mam problem z stworzeniem kodu, który umożliwiałby mi załączanie i wyłączanie w określonym czasie. A dokładniej zegar 24h/ lecz w szybszej wersji 60 s . 10 s off 50s on. Czy ktoś mógłby mi podpowiedzieć z czego powinienem skorzystać ? Próbuję na timed loop lecz nie wychodzi mi zbyt oraz elapsed time otoczonej pętlą while. To drugie przy testach bardziej chyba odpowiada tym wymaganiom lecz skonfigurowanie graniczy z cudem

Pozdrawiam

On/Off na zegarze problem

: 18 gru 2014 07:19
autor: SNT
While loop, moim zdaniem najlepiej mieć timer restartujący się co 60 s i jeden warunek: jeżeli większe lub równe 50 to true.

Re: On/Off na zegarze problem

: 18 gru 2014 09:58
autor: may
A może po prostu potrzebujesz wziąć aktualny czas systemowy i sprawdzić czy sekunda jest mniejsza czy większa niż 10? Możesz to zrobić albo dzieląc czas modulo 60 (patrz załącznik), albo wyciągając z niego wartość sekund aktualnej godziny.

Re: On/Off na zegarze problem

: 18 gru 2014 10:45
autor: TMa
A nie prościej zwykła while loop jak w załączniku. Nie obciążamy procka. Minimalna ilość kodu. A prosty benchmarking pokazuje dokładność na poziomie 1 ms.

On/Off na zegarze problem

: 18 gru 2014 11:55
autor: may
TMa, nie do końca zrozumiałem czy twoja odpowiedź odnosi się do pytania pritu czy do mojej propozycji "rozwiązania"? W jaki sposób twoja kręcąca się co sekundę pętla ma spowodować, że coś będzie przez 10 sekund wyłączone a przez 50 włączone?

pritu, mógłbyś może jakoś dokładniej sprecyzować czego tak naprawdę potrzebujesz? Timed loop jest tak naprawdę do czegoś innego więc twoje informacje o trudnościach z konfiguracją nie wnoszą niczego konstruktywnego w pytanie. Napisz dokładnie jak to włączanie / wyłączanie ma wyglądać.

On/Off na zegarze problem

: 18 gru 2014 12:46
autor: TMa
TMa, nie do końca zrozumiałem czy twoja odpowiedź odnosi się do pytania pritu czy do mojej propozycji "rozwiązania"? W jaki sposób twoja kręcąca się co sekundę pętla ma spowodować, że coś będzie przez 10 sekund wyłączone a przez 50 włączone?
Do mojej propozycji wystarczy podpiąć do terminala "i" część kodu z twojego rozwiązania (tę obliczającą resztę i komparator).

W rozwiązaniu may start mamy nieustalony. Pierwszy stan nie ma zdefiniowanej długości, ponieważ dąży do pełnej minuty. Potem kod działa na całkowitych minutach systemowych a nie minutach wzg startu aplikacji. Nie wspomnę że proces przy wejściu do takiej petli wykonuje ją conajmniej kilkadziesiąt razy na sekundę - przez co staje się niedokładny (zależny od momentu wykonania).

On/Off na zegarze problem

: 18 gru 2014 17:02
autor: pritu
Panowie robię projekt inteligentnego domu. Zakładamy że rolety na noc się zamykają i otwierają. Lecz by osoba która widzi ten projekt nie czekała pol dnia aż rolety się zamkną, trzeba ten proces przyśpieszyć. Podobnie muszę zrobić np z czajnikiem który po otwarciu rolet załączy się na 5 s i wyłaczy, a następne jego załączenie będzie dopiero przy ponownym otwarciu rolet. A dodając jeszcze w nocy która będzie trwać 10 sekund ma się załączyć światło w jednym pokoju, lecz to już będzie kosmetyka bo podepnę się pod rolety

Re: On/Off na zegarze problem

: 18 gru 2014 19:19
autor: semper fidelis
Moja propozycja w zalaczniku.

Prosta realizacja state machine ktora trwa okreslona ilosc czasu. Pozniej mozesz przejsc do dowolnego Case i tam wrzucic petle ktora bedzie znow wykonywac sie przez okreslony czas i kolejne przejscie.

W przykladzie w kolko 50s pozniej 10s.

Re: On/Off na zegarze problem

: 18 gru 2014 20:19
autor: pritu
semper fidelis pisze:Moja propozycja w zalaczniku.

Prosta realizacja state machine ktora trwa okreslona ilosc czasu. Pozniej mozesz przejsc do dowolnego Case i tam wrzucic petle ktora bedzie znow wykonywac sie przez okreslony czas i kolejne przejscie.

W przykladzie w kolko 50s pozniej 10s.


A bęziesz tak dobry i podasz mi screena bądź w wersji 12, iż takową posiadam tylko i nie mogę otworzyć

Re: On/Off na zegarze problem

: 18 gru 2014 20:29
autor: semper fidelis
Daje w wersji 12.