Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 26 wrz 2018, o 09:41


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 
Autor Wiadomość
PostNapisane: 15 wrz 2018, o 11:28 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 39
Lokalizacja: Piła
Pomógł: 2

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ą?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2018, o 10:56 
Online
Użytkownik

Dołączył(a): 13 sty 2016
Posty: 269
Pomógł: 10

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



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2018, o 13:29 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 39
Lokalizacja: Piła
Pomógł: 2

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ł.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 16 wrz 2018, o 16:06 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1431
Lokalizacja: Lipsko
Pomógł: 102

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.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2018, o 08:54 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 343
Lokalizacja: Rypin/Flekkefjord
Ostrzeżenia: 1
Pomógł: 2

Warunki sprawdzasz co minutę czy sekundę lub częściej? Jeśli częściej niż co minutę to dodał bym sprawdzanie czy sekundy =0 bo tak to przez minutę warunek sprawdzany jest wielokrotnie co może nie być ok w pewnych wypadkach.

Wysłane z mojego Moto G (5S) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2018, o 14:40 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 587
Pomógł: 22

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

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 17 wrz 2018, o 19:40 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 39
Lokalizacja: Piła
Pomógł: 2

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ąć?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2018, o 01:05 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 343
Lokalizacja: Rypin/Flekkefjord
Ostrzeżenia: 1
Pomógł: 2

Kolego flaga to po prostu zmienna np. flagaSwiatlo. Jej wartość gdy światło zapalone ustawiasz np. na 1 gdy zgaszone 0. Podczas przełączania światła oprócz zmiany stanu na odpowiednim pinie zmieniasz wartość flagaSwiatlo na odpowiednią. Wtedy w każdym miejscu kodu wiesz co się dzieje aktualnie ze światłem. W pętli głównej możesz to sprawdzić nie ustawiając stanu niskiego/wysokiego ileś milionów razy przez tę minutę bez potrzeby.

Wysłane z mojego Moto G (5S) przy użyciu Tapatalka



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2018, o 03:35 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 587
Pomógł: 22

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

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2018, o 08:29 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 01 lis 2015
Posty: 1340
Lokalizacja: okolice Warszawa
Pomógł: 132

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



Ostatnio edytowano 18 wrz 2018, o 10:47 przez Daro69, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2018, o 10:39 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 587
Pomógł: 22

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.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 wrz 2018, o 11:27 
Offline
Użytkownik

Dołączył(a): 22 kwi 2017
Posty: 39
Lokalizacja: Piła
Pomógł: 2

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ę.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 12 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 3 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO