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: 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ć 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 |
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 |
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: 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/ |