Ustawianie daty na ds3231 RTC - Wersja do druku +- Arduino Polska Forum (https://forum.arduinopolska.pl) +-- Dział: "Projekt Arduino Polska" (https://forum.arduinopolska.pl/dzial-projekt-arduino-polska) +--- Dział: Zarys "Projektu Arduino Polska" (https://forum.arduinopolska.pl/dzial-zarys-projektu-arduino-polska) +--- Wątek: Ustawianie daty na ds3231 RTC (/watek-ustawianie-daty-na-ds3231-rtc) |
Ustawianie daty na ds3231 RTC - Julek Rogalski - 19-01-2019 Witam! Jestem początkującym więc proszę o wyrozumiałość. Mam podstawową wiedzę o Arduino lecz porykam się z problemem dotyczącym programu. Robię projekt oparty na Arduino UNO polegający na wyświetlaniu czasu i daty oraz po kliknięciu przycisku, temperatury. Program działa lecz jest jeden problem. Przerabiałem to sam i czas jest ustawiony z komputera, więc gdy odłączam od prądu to zegar się resetuje i pokazuje godzinie o której wgrałem program. Chciałbym mieć możliwość ustawienia daty przy pomocy tact switchy. Starałem się sam przerobić program lecz nie udawało mi się to. Proszę o pomoc. Tu podaje program. Kod: #include <OneWire.h> RE: Ustawianie daty na ds3231 RTC - kaczakat - 19-01-2019 Jak chcesz mieć zegar to zastosuj jakiś RTC z baterią, bateria w takich modułach wystarcza na lata, np. DS3221. W przykładach biblioteki tego modułu znajdziesz jak ustawić wszystko wysyłając 1 linijkę tekstu przez UART. Ustawienie przez przyciski wymaga zrobienia jakiegoś menu, prosty przykład znajdziesz tu: https://starter-kit.nettigo.pl/2017/04/menu-wyswietlaczu-16x2/. RE: Ustawianie daty na ds3231 RTC - Julek Rogalski - 19-01-2019 (19-01-2019, 15:04)kaczakat napisał(a): Jak chcesz mieć zegar to zastosuj jakiś RTC z baterią, bateria w takich modułach wystarcza na lata, np. DS3221. W przykładach biblioteki tego modułu znajdziesz jak ustawić wszystko wysyłając 1 linijkę tekstu przez UART. Ustawienie przez przyciski wymaga zrobienia jakiegoś menu, prosty przykład znajdziesz tu: https://starter-kit.nettigo.pl/2017/04/menu-wyswietlaczu-16x2/. Cześć! Moduł ma baterię lecz nie zapisuje daty. Dzięki za link spróbuje wgrać. Może się uda. Pozdrawiam! RE: Ustawianie daty na ds3231 RTC - Robson Kerman - 19-01-2019 A mi się wydaje ( to znaczy, jest to moja subiektywna opinia), że PCF8583 dla początkującego będzie łatwiejszy w obsłudze. Bardzo często się zdarza, że te chińskie moduły z DS'em są tak kiepskiej jakości, że nerwów Ci zabraknie aby to oprogramować jak należy. RE: Ustawianie daty na ds3231 RTC - kaczakat - 19-01-2019 OK, jak masz RTC to po prostu wgrywa Ci ten czas z kompilacji, a potem po każdym resecie masz go wpisywanego na nowo do RTC z kodu procesora. Powinieneś RAZ wgrać szkic z ustawianiem czasu systemowego, natychmiast zakomentować linijki, które odpowiadają za ustawienie czasu i wgrać ponownie szkic (lub inny szkic, bez tego ustawiania, może za dużo przekopiowałeś z przykładowego szkicu z ustawianiem czasu, wybierz inny przykład, gdzie jest tylko odczytywany czas), teraz będzie czas tylko odczytywany. Wystarczy użyć innej biblioteki, wgrać przykład, ustawić czas z UART, potem czas będzie OK. Ale oczywiście ustawianie czasu możesz sobie zrobić przez menu czy wysyłając UART. PCF8583 jest fajny jak ktoś chce się nauczyć podstaw komunikacji I2C, zrobić swoje funkcje. Użyteczność jest taka sobie - nie ma kwarcu, baterii, wyboru źródła zasilania, to trzeba sobie zrobić samemu. Potem poczytać PDF, obczaić kodowanie BCD. Tak że edukacyjnie jak najbardziej, "arduinowo" wystarczy wgrać bibliotekę do precyzyjnego, gotowego modułu DS3231 z aku za 1$ i ma działać, lecimy dalej. Nie mam złych doświadczeń z DS, mam kilka modułów, różne konstrukcje (z pamięcią EEPROM i akumulatorem, takie ze zgrzaną baterią), różni sprzedawcy i wszystkie chodzą super dokładnie, mój laptop gubi więcej s w tydzień niż te DSy w rok. RE: Ustawianie daty na ds3231 RTC - Julek Rogalski - 20-01-2019 (19-01-2019, 23:49)kaczakat napisał(a): OK, jak masz RTC to po prostu wgrywa Ci ten czas z kompilacji, a potem po każdym resecie masz go wpisywanego na nowo do RTC z kodu procesora. Powinieneś RAZ wgrać szkic z ustawianiem czasu systemowego, natychmiast zakomentować linijki, które odpowiadają za ustawienie czasu i wgrać ponownie szkic (lub inny szkic, bez tego ustawiania, może za dużo przekopiowałeś z przykładowego szkicu z ustawianiem czasu, wybierz inny przykład, gdzie jest tylko odczytywany czas), teraz będzie czas tylko odczytywany. Wystarczy użyć innej biblioteki, wgrać przykład, ustawić czas z UART, potem czas będzie OK.Masz racje. Moduł PCF8583 był by lepszy ale tego zegara ds3231 nie pominę więc mysle żeby go tu użyć. Znalazłem inny przykład w którym mogę ustawić godzinę ręcznie więc to nie będzie już większy problem ale z kolei tam jest na serial monitorze pokazywana data i godzina. Jak próbowałem na LCD I2C przerobić to było "'lcd' does not name a type" więc nie wiem co jest nie tak wstawię kod w wolnej chwili możesz przejrzeć. W 30 linijce bym mógł wstawić zmienne które po kliknięciu przycisku by się zmieniały Kod: #include <LiquidCrystal_I2C.h> RE: Ustawianie daty na ds3231 RTC - kaczakat - 20-01-2019 Zbyt duży bajzel żebym to ogarnął, na pewno jest literówka tu: lce.print(month, DEC);, ale klamerki {} wstawiał kotek biegnący po klawiaturze. Zrób sobie to od nowa przywiązując większą wagę gdzie funkcja/blok programu się zaczyna, gdzie kończy - jak coś kopiujesz, rób większe odstępy między funkcjami, tak byś widział, że np. część kodu Ci wisi poza funkcjami. Pamiętaj też, by przed użyciem funkcji wcześniej była jej deklaracja/definicja, najlepiej przed setup. Włącz sobie też pełne komunikaty podczas kompilacji w ustawieniach. To duży kawałek kodu, nie chcesz się udławić to połykaj mniejszymi porcjami i ostrożniej. RE: Ustawianie daty na ds3231 RTC - Julek Rogalski - 20-01-2019 (20-01-2019, 12:09)kaczakat napisał(a): Zbyt duży bajzel żebym to ogarnął, na pewno jest literówka tu: lce.print(month, DEC);, ale klamerki {} wstawiał kotek biegnący po klawiaturze. Zrób sobie to od nowa przywiązując większą wagę gdzie funkcja/blok programu się zaczyna, gdzie kończy - jak coś kopiujesz, rób większe odstępy między funkcjami, tak byś widział, że np. część kodu Ci wisi poza funkcjami. Pamiętaj też, by przed użyciem funkcji wcześniej była jej deklaracja/definicja, najlepiej przed setup. Włącz sobie też pełne komunikaty podczas kompilacji w ustawieniach. To duży kawałek kodu, nie chcesz się udławić to połykaj mniejszymi porcjami i ostrożniej. Słuszna uwaga z tymi klamerkami muszę zrobić to w jakiś inny sposób. |