• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zegar na DS1307 liczenie czasu, alarm co ten sam okres czasu.
#3
(04-12-2019, 00:06)Jarewa0606 napisał(a): czas= (godziny *60)+minuty;  // zmienna jest co minute

biorąc pod uwagę 10-15
if(czas >= 600 && czas <= 900){
  napisz kod na "czas" by co wymagany czas włączał wyłączał przekaźnik
}

Nie chodzi o ramy czasowe, to nie jest żaden problem. To nic nie da, ja potrzebuję mieć możliwość określenia wszystkich parametrów. Urządzenie ma wyświetlacz z menu gdzie można wybrać w jakie dni tygodnia ma działać, w jakich godzinach w każdym z dni tygodnia oraz jaki jest interwał uruchamiania przekaźnika (przekaźnik tutaj to tylko uproszczenie żeby nie zaciemniać obrazu sytuacji)

Problem to poprawne odliczanie czasu kiedy np od 21:00 do 02:00 urządzenie ma być aktywne, i interwał uruchamiania przekaźnika to 40 minut to ja potrzebuję, żeby w tych godzinach co 40 minut uruchamiał się przekaźnik a do tego muszę wziąć aktualny czas dodać do niego precyzyjnie to 40 minut i tak ustawiona metoda ma wypluć dokładną datę kiedy uruchomię funkcję przekaźnika, i tak za każdym razem. Reszta problemu jest opisana w pierwszym poście, głównie chodzi o to, że jest dużo zmiennych i ten czas mi się szybko rozjedzie bez sporej metody do jego poprawnego liczenia. Dlatego szukam biblioteki lub podobnego rozwiązania.

Oczywiście mogę pójść na łatwiznę i po prostu uruchamiać licznik np w millis() dla każdego interwału ale nie jest to eleganckie rozwiązanie i zegar w atmedze szybko rozjedzie się z zegarem w module RTC (osobne taktowania). Do tego jeśli procek się zawiesi to nawet jak WDT go podniesie to odliczanie rozpocznie się od nowa czyli znów interwał się rozjedzie a o zapisywaniu millis() np co 1s do EEPROM nie ma mowy bo żywotność skończy się po tygodniu.

//EDIT
Problem rozwiązany w bardzo prosty sposób. Jakby ktoś miał podobny problem to wystarczy wyrzucić czas w unixtime, a później napisać metodę która sobie na tym operuje czyli dla mnie wystarczy, że co np 1s sprawdzi czy upłynęła odpowiednia ilość sekund i jeśli tak to wykona akcje po czym zegar się zresetuje i zacznie liczyć od początku. Rozwiązanie o tyle fajne, że czas nadal jest pobierany z RTC więc nic się nie rozjedzie.

Dzięki i pozdrawiam.
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Zegar na DS1307 liczenie czasu, alarm co ten sam okres czasu. - przez kataklysm - 04-12-2019, 01:30

Skocz do:


Przeglądający: 1 gości