ATNEL tech-forum
https://forum.atnel.pl/

Wyłącznik świateł cz można prościej?
https://forum.atnel.pl/topic21286.html
Strona 1 z 1

Autor:  kazekat [ 15 wrz 2018, o 11:28 ]
Tytuł:  Wyłącznik świateł cz można prościej?

Witam szanownych kolegów.
Od jakiegoś czasu "męczę" się z pewnym projektem. Obecnie na obiekcie jest układ załączający i wyłączający światło na parkingu. Układ ten reaguje na czujkę zmierzchową i po godzinie 21 ręcznie wyłączamy dwa obwody światła. Ale wiadomo, że raz przypomni się o 21 a raz o godzinie 24 i wtedy wyłącza się światło. Zbudowałem układzik oparty na atmedze 8 i DS1307, który podaje mi czas nawet po wyłączeniu prądu i podaje mi stan niski na PD7(LED_IN) atmegi. Właściwie to wszystko działa ale chciałbym zapytać szanownych kolegów czy można inaczej a przede wszystkim prościej sformułować warunki podawania tego stanu niskiego (wyłączenia światła). Ja powołałem sobie takie zmienne "hours_al = 21" i "minutes_al = 20 " godzina i minuta wyłączenia i "zalacz_hours = 11", która daje mi możliwość załączenia światła czyli podaje stan wysoki na LED_IN i po zadziałaniu zmierzchówki włączy światło na parkingu oraz hours, minutes.
Fragment kodu odpowiedzialny za wyłączanie:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


I teraz zadam powyższe pytanie czy można prościej inaczej a może powinienem iść całkowicie inną drogą?

Autor:  kazekat [ 16 wrz 2018, o 13:29 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

zubik napisał(a):
No ale co chcesz uprościć? Możesz rozpisać to na kolejne if-y ale czy ja wiem czy to coś zmieni, jeśli ten warunek jest dla ciebie czytelny to w porządku

Warunki są czytelne i do mojego projektu pasują bo stan niski na PD7 ma mi się pojawić po godzinie 21 i załączyć możliwość załączenia światła w ciągu dnia (przed zmrokiem) i tak jest. Jednakże nie są to warunki uniwersalne bo jak hours_al ustawię na 00 to już mi to nie działa. Myślałem, że ktoś miałby pomysł nie na if-ach i mnie naprowadził.

Autor:  SylwekK [ 16 wrz 2018, o 16:06 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Daj warunek w programie, który sprawdza i zamienia 00 na 24, który widoczny będzie tylko dla programu. To chyba najprostsze rozwiązanie.

Autor:  Harry [ 17 wrz 2018, o 14:40 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

A nie lepiej ustawić flagę ze światło jest włączone, a potem tylko sprawdzać ją? W ten sposób tylko raz wejdziesz do bloku wykonawczego.

Wysłane ze srajfona

Autor:  kazekat [ 17 wrz 2018, o 19:40 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Po pierwsze to muszę napisać, że nie jestem biegły w te klocki i każdy problem muszę dużo wałkować aby zrozumieć i rozwiązać.
wachcio napisał(a):
Warunki sprawdzasz co minutę czy sekundę lub częściej?
Warunki przedstawione powyżej mam w pętli głównej i można by powiedzieć sprawdzam ciągle. Dokładność i szybkość działania nie jest mi potrzebna bardziej pewność działania.
Harry napisał(a):
A nie lepiej ustawić flagę ze światło jest włączone, a potem tylko sprawdzać ją? W ten sposób tylko raz wejdziesz do bloku wykonawczego.
Jeśli to jest klucz do stworzenia lepszego uniwersalnego warunku a także nauczenia się czegoś nowego to muszę to zgłębić tylko od czego zacząć?

Autor:  Harry [ 18 wrz 2018, o 03:35 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Miałem na myśli coś w tym stylu, ale musisz oczywiście sprawdzić
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

mam nadzieję że zrozumiesz coś z tego

sorry za formatowanie, ale o 3:30 poprostu mi się nie chce :P

Autor:  Daro69 [ 18 wrz 2018, o 08:29 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Witam,
Strasznie dużo tego && || :/
Myślę że znacznie uprości logikę,
wkiteanie minut i godzin w jedną zmienną.
Cztery starsze bity to godziny a młodsze to minuty. (Przesunięcie bitowe).
Łatwiej jest tak sklejony czas porównywać.
Oczywiście sklejanie bieżącego czasu i porównywanie co minutę, a sklejanie ustawionego w momencie ustawiania.
Taka myśl.
Możliwe że coś nie doczytałem. :?
Pozdrawiam.

Wysłane z mojego Lenovo K33a42 przy użyciu Tapatalka

Autor:  Harry [ 18 wrz 2018, o 10:39 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

A może od razu z "detekcją" przejścia przez północ

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Autor:  kazekat [ 18 wrz 2018, o 11:27 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Daro69 Harry to może być to :) muszę to jeszcze prześledzić jak będę miał chwilę wolną. Dam znać co z tego wyszło. Dzięki chłopaki. No i przede wszystkim muszę to zrozumieć, na razie założenia rozumiem, jeszcze raz dziękuję.

Autor:  kazekat [ 7 paź 2018, o 09:38 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Chciałem odpowiedzieć co wyszło z moich wypocin i kolegów podpowiedzi. Przede wszystkim chciałem Wam podziękować za podpowiedzi. Trzy razy zamieniłem dwie zmienne w jedną i dużo to uprościło kod. Nie działa mi to jeszcze gdy czas wyłączenia światła mam ustawiony po północy ale w tym projekcie nie jest mi to potrzebne i na razie to zostawię wstawię kandę i w przyszłości może wgram coś lepszego.
Tak wygląda moja funkcja:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Jest chyba prościej prawda?
Harry poznajesz ten kodzik?
Jeszcze raz dzięki.

Autor:  Harry [ 7 paź 2018, o 09:45 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Nie musisz kopiować całości, ale chociaż zastosuj flagi, bo teraz z każdym obiegiem pętli wysyłasz tekst na wyświetlacz. Obawiam się że przy takiej eksploatacji padnie po max kilku miesiącach.

Wysłane ze srajfona

Autor:  kazekat [ 7 paź 2018, o 09:58 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Funkcja jest wywoływania w przerwaniu i jest wywoływania co 1 sek, nie wiem czy to jest dobrze? Wyświetlacz będzie w urządzeniu tylko kontrolne powinno to działać. Dioda i wyjście na moduł przekaźnika jest na stałe. Ale może jeszcze coś poćwicze z flagą.
Dzięki.

Autor:  Harry [ 7 paź 2018, o 10:49 ]
Tytuł:  Re: Wyłącznik świateł cz można prościej?

Jeżeli odświeżasz wyświetlacz tylko co sekundę, to i tak daje Ci to 86400 razy na dobę, ogólnie żywotność wyświetlaczy to jakieś 50-100 tysięcy godzin, pytanie tylko czy ilość odświeżeń nie skróci ich żywotności.
Generalnie w przerwaniu nie powinno być obsługi wyświetlaczy, ani innych zasobożernych operacji.
Obliczenia czasów włączenia/wyłączenia wyrzuć sobie z pętli, bo to niema żadnego sensu - przecież nie przestawiasz zegara co sekundę, a tam zostaw tylko czas aktualny.

Strona 1 z 1 Strefa czasowa: UTC + 1
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/