SantyagoSantyago
Avatar

Witaj!
Blog archiwalny. Już niebawem nowy serwis!

YouTube RSS Facebook GitHub

Arduino poradnik

Wstęp

Teoria

Biblioteki

Komponenty

Czujniki i sensory

Rozwiązania i algorytmy

Narzędzia

Mikrokontrolery i Arduino IDE

Arduino i klony

Poradniki wideo

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Ostatnie fotografie

polskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorypolskie-gorywieliczka-szyb-danilowicza

Zegar czasu rzeczywistego RTC DS3231

DS3231 jest bardzo precyzyjnym układem RTC służącym do odmierzania czasu, często spotykanym w niektórych modułach dla Arduino.

Jego ogromną zaletą jest brak konieczności podłączania zewnętrznego rezonatora kwarcowego oraz wbudowany termometr do kompensacji temperaturowej.

Jeśli przypomnimy sobie, jaki wpływ ma temperatura na standardowy kwarc zegarkowy, stosowany w opisywanym niedawno DS1307 i jakie może mieć to skutki po upływie miesiąca czasu, to z pewnością docenicie dokładność jaką oferuje DS3231, która wynosi stałe ±2ppm w zakresie temperatur 0°C ÷ 40°C oraz ±3.5ppm w zakresie temperatur -40°C ÷ 85°C. Tak duża dokładność gwarantuje maksymalną odchyłkę odmierzanego czasu do około 1 minuty w skali roku.

DS3231 pozwala również na bezpośredni odczyt temperatury z wbudowanego termometru, konfigurację dwóch alarmów obsługujących przerwania, a także generator przebiegu prostokątnego o zadanej częstotliwości 1Hz ÷ 32768Hz. Posiada również dodatkowe wyjście o stałym sygnale prostokątnym o częstotliwości 32kHz.

Układ DS3231 dostępny jest jedynie w obudowie SOIC:

Dokumentacja techniczna: https://www.jarzebski.pl/datasheets/DS3231.pdf

Schemat połączeń

Sposób podłączenia DS3231 jest bardzo podobny do układu DS1307. Podłączamy więc zasilanie 5V (nóżka 2) oraz masę GND (nóżka 13). Bardzo ważne jest, aby również podłączyć do masy wszystkie wyprowadzenia oznaczone jako NC (nóżki 5,6,7,8,9,10,11,12). DS3231 również komunikuje się z Arduino za pomocą magistrali I2C, a więc łączymy SCL (nóżka 16) do pinu A5, a SDA (nóżka 15) do pinu A4. Na koniec nie zapomnijmy podciągnąć linii sygnałowych rezystorami o wartości 10kΩ do zasilania 5V. Baterię 3V podłączamy natomiast do VBAT (nóżka 14). Wyjścia SQW/OUT oraz 32kHz,  również podciągamy rezystorami o wartości 10kΩ do zasilania 5V.  Jest to zabieg niezbędny, ponieważ i tutaj wyjścia działają w układzie otwartego drenu. Dlatego,  jeśli chcemy wykorzystać do nich diodę LED, należy podłączyć tutaj katodę - anodę zaś do masy.  Jeśli nie planujemy korzystać z  SQW/OUT oraz wyjścia sygnału 32kHz, możemy pozostawić je "w powietrzu".

Ja zamiast zasilania bateryjnego wykorzystałem napięcie 3.3V z Arduino oraz podłączyłem sobie diody LED do sygnalizacji stanów na wyjściach z rezystorami 220Ω.

Prosty przykład

Do obsługi modułów z układami DS3231 przygotowałem bibliotekę dla Arduino, którą można pobrać z repozytorium Git: https://github.com/jarzebski/Arduino-DS3231. Bazuje ona bibliotekach JeeLabs oraz Adafruit, jednak oferuje ona dodatkowe funkcje do sterowania wyjściami SQW/OUT oraz 32kHz, ustawiania alarmów oraz formatowanie daty na wzór funkcji date() znanej z języka PHP.

  1. #include <Wire.h>
  2. #include <DS3231.h>
  3.  
  4. DS3231 clock;
  5. RTCDateTime dt;
  6.  
  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.  
  11.   // Inicjalizacja DS3231
  12.   Serial.println("Initialize DS3231");;
  13.   clock.begin();
  14.  
  15.   // Ustawiany date i godzine kompilacji szkicu
  16.   clock.setDateTime(__DATE__, __TIME__);
  17. }
  18.  
  19. void loop()
  20. {
  21.   // Odczytujemy i wyswietlamy czas
  22.   dt = clock.getDateTime();
  23.  
  24.   Serial.print("Raw data: ");
  25.   Serial.print(dt.year);   Serial.print("-");
  26.   Serial.print(dt.month);  Serial.print("-");
  27.   Serial.print(dt.day);    Serial.print(" ");
  28.   Serial.print(dt.hour);   Serial.print(":");
  29.   Serial.print(dt.minute); Serial.print(":");
  30.   Serial.print(dt.second); Serial.println("");
  31.  
  32.   delay(1000);
  33. }

Formatowanie daty

Jeśli chcemy wyświetlić czas i datę w odpowiednim dla nas formacie, możemy skorzystać z funkcji dateFormat().

  1. #include <Wire.h>
  2. #include <DS3231.h>
  3.  
  4. DS3231 clock;
  5. RTCDateTime dt;
  6.  
  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.  
  11.   // Inicjalizacja DS3231
  12.   Serial.println("Initialize DS3231");;
  13.   clock.begin();
  14.  
  15.   // Ustawiamy date i czas z kompilacji szkicu
  16.   clock.setDateTime(__DATE__, __TIME__);
  17.  
  18.   // Lub recznie (YYYY, MM, DD, HH, II, SS
  19.   // clock.setDateTime(2014, 4, 13, 19, 21, 00);
  20. }
  21.  
  22. void loop()
  23. {
  24.   // Odczytujemy czas i formatujemy za pomoca funkcji dateFormat
  25.   dt = clock.getDateTime();
  26.  
  27.   Serial.print("Long number format:          ");
  28.   Serial.println(clock.dateFormat("d-m-Y H:i:s", dt));
  29.  
  30.   Serial.print("Long format with month name: ");
  31.   Serial.println(clock.dateFormat("d F Y H:i:s",  dt));
  32.  
  33.   Serial.print("Short format witch 12h mode: ");
  34.   Serial.println(clock.dateFormat("jS M y, h:ia", dt));
  35.  
  36.   Serial.print("Today is:                    ");
  37.   Serial.print(clock.dateFormat("l, z", dt));
  38.   Serial.println(" days of the year.");
  39.  
  40.   Serial.print("Actual month has:            ");
  41.   Serial.print(clock.dateFormat("t", dt));
  42.   Serial.println(" days.");
  43.  
  44.   Serial.print("Unixtime:                    ");
  45.   Serial.println(clock.dateFormat("U", dt));
  46.  
  47.   Serial.println();
  48.  
  49.   delay(1000);
  50. }

Sterowanie wyjściem 32kHz oraz SQW/INT

W poniższym przykładzie możemy zobaczyć jak włączyć lub wyłączyć generator przebiegu prostokątnego na wyjściu 32kHz oraz ustawić interesujący nas przebieg prostokątny na wyjściu SQW. Sygnał SQW możemy wykorzystać do obsługi przerwania lub podłączyć diodę LED jako sygnalizator sekund, oszczędzając tym samym cyfrowy pin Arduino. Kiedy będziemy mieli zamiar skorzystać z alarmów to wyjście SQW/INT będzie nam służyło właśnie do obsługi przerwań.

  1. #include <Wire.h>
  2. #include <DS3231.h>
  3.  
  4. DS3231 clock;
  5.  
  6. boolean state;
  7.  
  8. void setup()
  9. {
  10.   Serial.begin(9600);
  11.  
  12.   // Inicjalizyjemy DS3231
  13.   Serial.println("Initialize DS3231");;
  14.   clock.begin();
  15.  
  16.   // Wylaczamy wyjscie  32kHz
  17.   clock.enable32kHz(false);
  18.  
  19.   // Ustawiamy wyjscie SQW na sygnal 1Hz
  20.   clock.setOutput(DS3231_1HZ);
  21.  
  22.   // Wlaczamy wyjsscie SQW
  23.   clock.enableOutput(true);
  24.  
  25.   if (clock.isOutput())
  26.   {
  27.     Serial.println("Oscilator is enabled");
  28.   } else
  29.   {
  30.     Serial.println("Oscilator is disabled");
  31.   }
  32.  
  33.   switch (clock.getOutput())
  34.   {
  35.     case DS3231_1HZ:     Serial.println("SQW = 1Hz"); break;
  36.     case DS3231_4096HZ:  Serial.println("SQW = 4096Hz"); break;
  37.     case DS3231_8192HZ:  Serial.println("SQW = 8192Hz"); break;
  38.     case DS3231_32768HZ: Serial.println("SQW = 32768Hz"); break;
  39.     default: Serial.println("SQW = Unknown"); break; }
  40. }
  41.  
  42. void loop()
  43. {
  44.    // Wlaczamy i wylaczamy wyjscie 32kHz co 2 sekundy
  45.    clock.enable32kHz(state);
  46.    state = !state;
  47.    delay(2000);
  48. }

Odczyt temperatury z wbudowanego czujnika

DS3231 pozwala nam również na dostęp do wbudowanego termometru o rozdzielczości 10-bitów. Co daje nam odczyt z precyzją 0.25°C i dokładnością ±3°C. Domyślnie pomiar temperatury odbywa się co 64 sekundy na potrzeby kompensacji , jednak możemy wymusić ponowny pomiar za pomocą funkcji forceConversion().

  1. #include <Wire.h>
  2. #include <DS3231.h>
  3.  
  4. DS3231 clock;
  5. RTCDateTime dt;
  6.  
  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.  
  11.   // Inicjalizyjemy DS3231
  12.   Serial.println("Initialize DS3231");;
  13.   clock.begin();
  14. }
  15.  
  16. void loop()
  17. {
  18.   // Wymuszamy konwersje temperatury, poniweaz domyslnie jest ona odswiezana co 64 sekundy
  19.   clock.forceConversion();
  20.  
  21.   Serial.print("Temperature: ");
  22.   Serial.println(clock.readTemperature());
  23.  
  24.   delay(1000);
  25. }

Konfiguracja alarmów

Układ pozwala na konfigurację dwóch alarmów, które różnią się od siebie głównie metodą porównania czasu z ustawionym alarmem.

Alarm 1 pozwala na aktywowanie przerwania do następujących dopasowań:

  • Każda sekunda
  • Dopasowanie tylko sekundy
  • Dopasowanie sekundy i minuty
  • Dopasowanie sekundy, minuty i godziny
  • Dopasowanie sekundy, minuty, godziny oraz dnia miesiąca
  • Dopasowanie sekundy, minuty, godziny oraz dnia tygodnia

Alarm 2 pozwala natomiast na aktywowanie przerwania do następujących dopasowań:

  • Kazda pełna minuta
  • Dopasowanie tylko do wybranej minuty
  • Dopasowanie minuty i godziny
  • Dopasowanie do minuty, godziny oraz dnia miesiąca
  • Dopasowanie do minuty, godziny oraz dnia tygodnia

Łatwo więc zauważyć, że Alarm 1 operuje na sekundach natomiast Alarm 2 na minutach. W ramach tego przykładu w funkcji setup() wyłączamy i resetujemy przerwania za pomocą funkcji armAlarmX(false) oraz clearAlarmX() ponieważ wartości te są podtrzymywane bateryjnie. W normalnej pracy oczywiście powinniśmy pominąć ten fragment, ponieważ będzie on powodował kasowanie ustawień przy powrocie głównego zasilania.

  1. #include <Wire.h>
  2. #include <DS3231.h>
  3.  
  4. DS3231 clock;
  5. RTCDateTime dt;
  6.  
  7. void setup()
  8. {
  9.   Serial.begin(9600);
  10.  
  11.   // Inicjalizacja DS3231
  12.   Serial.println("Initialize DS3231");;
  13.   clock.begin();
  14.  
  15.   // Wylaczamy alarmy i resetujemy przerwania do przykladu,
  16.   // poniewaz ustawienia sa podtrzymywane bateryjnie
  17.   clock.armAlarm1(false);
  18.   clock.armAlarm2(false);
  19.   clock.clearAlarm1();
  20.   clock.clearAlarm2();
  21.  
  22.   // Ustawiamy date (Year, Month, Day, Hour, Minute, Second)
  23.   clock.setDateTime(2014, 4, 25, 0, 0, 0);
  24.  
  25.   // Ustawiamy Alarm1 na 20s kazdej minutu z dopasowaniem sekund
  26.   // setAlarm1(Date or Day, Hour, Minute, Second, Mode, Armed = true)
  27.   clock.setAlarm1(0, 0, 0, 20, DS3231_MATCH_S);
  28.  
  29.   // Usyawiamy Alarm2 - Kazda pierwsza minuta kazdej godziny z dopasowaniem do minut
  30.   // setAlarm2(Date or Day, Hour, Minute, Mode, Armed = true)
  31.   clock.setAlarm2(0, 0, 1,     DS3231_MATCH_M);
  32. }
  33.  
  34. void loop()
  35. {
  36.   // Odczytujemy date
  37.   dt = clock.getDateTime();
  38.  
  39.   Serial.println(clock.dateFormat("d-m-Y H:i:s - l", dt));
  40.  
  41.   // Sprawdzamy alaram 1
  42.   if (clock.isAlarm1())
  43.   {
  44.     Serial.println("ALARM 1 TRIGGERED!");
  45.   }
  46.  
  47.   // Sprawdzamy alaram 1
  48.   if (clock.isAlarm2())
  49.   {
  50.     Serial.println("ALARM 2 TRIGGERED!");
  51.   }
  52.  
  53.   delay(1000);
  54. }

W tym przykładzie zademonstrowałem jak obsłużyć alarmy programowo, jednak w repozytorium Git znajdziecie przykład z wykorzystaniem przerwania INT0 w Arduino UNO. Przykład ten został również omówiony na filmie poniżej.

Materiały dodatkowe

Dokumentacja techniczna: https://www.jarzebski.pl/datasheets/DS3231.pdf
Biblioteka Arduino: https://github.com/jarzebski/Arduino-DS3231

Reklama

Komentarze Komentarze
Avatar 1
Bartłomiej 'teast' Rusiecki Linux x86_64 / Mozilla Firefox 28.0
28 April 2014 - 04:01 Katowice

kolejny ciekawy wpis. Co kolejne bedzie? :)

Avatar 1
Piotr Budny Linux x86_64 / Safari 537.36
17 May 2014 - 12:51 Warszawa

Cześć,
mam problem z obsługą przerwania w gotowym module http://www.ebay.com/itm/DS3231-AT24C32-IIC-Precision-RTC-Real-Time-Clock-Memory-Module-For-Arduino-/141135165489?

Ze schematu
Oryginalny obraz posiada rozmiar 1000x660
i zdjęć modułu wygląda, że int podłączone jest przez rezystorek.

Pomiar woltomierzem wskazuje, że po wywołaniu przerwania napięcie spada z 5 do 0, i po chwili wraca do 5, ale gdy podłączę pin pod arduino i użyję attachInterrupt, to albo od razu serial monitor się przywiesza i nie wyświetla żadnych danych (zaczyna wyświetlać od razu po odłączeniu kabelka), albo, przerwanie wywoływane kilkanaście razy na sekundę (pomiędzy wysłaniem czasu na Serial.print).

Gdzie może być problem?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 29.0
17 May 2014 - 22:58 Bytom

Spotkałem się z podobnym problemem, ale przez fragment programu. Pokaż funkcję obsługi przerwania, czasami może przyblokować właśnie program (ja tak przyblokowałem, jak chciałem w niej zresetować obsłużone przerwanie). Ew. zobacz czy zadziała ci ten przykład:

https://github.com/jarzebski/Arduino-DS3231/blob/master/DS3231_intalarm/DS3231_intalarm.ino

Avatar 1
Piotr Budny Linux x86_64 / Safari 537.36
18 May 2014 - 13:09 Warszawa

Wydaje mi się, że chyba jest coś nie tak elektrycznie. Uploaduję szkic, kabel z SQW z zegara wisi luzem, w monitorze portu dostaję co sekundę 45 linijek *** INT 0 ***, a potem datę.
Gdy podłączę pod Arduino (używam Leonardo) pod cyfrowy pin 3, na porcie szeregowym pojawia się jeszcze pojedyncze *** INT 0 ***, i potem już nic więcej. Gdy wyciągnę kabel, pojawia się znów sporo linijek z przerwaniem i poprawna godzina.

Pod SQW podłączyłem diodę, która w momencie alarmu na sekundę przygasa. Jeżeli dodatkowo podłączam kabel pod pin 3, dioda świeci odrobinę jaśniej (i przygasa, jak kabel wyciągnę).

Jeżeli wszystko podłączę i wcisnę reset na Arduino, na monitorze nic się nie wyświetla, dioda się pali, a po wystąpieniu alarmu (po tych 10s), dioda gaśnie na dobre, aż do wyciągnięcia kabla z pin3.

Próbowałem też zamiast przerwania odczytywać (analogRead/digitalRead) na pinie A0 i 0, przed alarmem jest stan 1, po alarmie 0, i nie zamienia się już później na 1.

Dla porównania, robiłem sobie jakieś testy z obsługą przerwania z przycisku i czujki pir, wszystko działa.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 29.0
19 May 2014 - 21:40 Bytom

Dziwna sprawa. Najgorsze jest to, że nie posiadam Leonardo by się temu przyjrzeć. Toć to troszkę dziwne, bo dioda w momencie alarmu wystąpienia przerwania powinna się zaświecić. Może coś z połączeniami? Wyjścia DS3231 pracują w otwartym drenie... nie wiem już w sumie. Zaopatrzę się w Leonardo to dam znać jak mi poszło.

Avatar 1
Piotr Budny Linux x86_64 / Safari 537.36
19 May 2014 - 23:11 Warszawa

Mi się wydaje, że alarm jest active-low, czyli napięcie spada w momencie wystąpienia alarmu (mam diodę podłączoną pod ~INT/SQW, nie dodatkową diodę pod pin4 z przykładu).
Ogólnie nie rozumiem, dlaczego cały układ się przywiesza jak tylko podpinam ~INT/SQW do arduino. Może jednak coś jest nie tak z samym modułem?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 29.0
19 May 2014 - 23:38 Bytom

To całkiem możliwe, na gołym DS3231 dziś sprawdzałem i problemu nie potrafię powtórzyć :(

Avatar 1
Mój podpis Windows / Safari 537.36
26 September 2014 - 15:11 Brak informacji

A czy przy tym gotowym układzie (jak w jednym z komentarzy) też są wymagane te rezystory 10k do linii sygnałowych?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 31.0
28 September 2014 - 09:30 Bytom

Nie - tam są już podciągnięte rezystorami (RP1)

Avatar 1
problem z wyświetlaniem Windows 7 / Safari 537.36
13 October 2014 - 09:19 Warszawa

panowie przedstawiam skecz ,po wgraniu do Arduino zegar głupieje możecie doradzić gdziejest błąd
https://gist.github.com/gregor36/18817234729525f584cf

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 33.0
14 November 2014 - 01:20 Bytom

Nic tu nie ma :(

Whoops.
We seem to have missed the gist of that gist you were looking for.

Avatar 2
roblad Windows 7 / Mozilla Firefox 33.0
26 November 2014 - 07:42 Brak informacji

Witam,

Chcialem uzyc tej biblioteki do tego RTC, ale nie przewidziano w niej ustawienia bitu na istnienie baterii i pracy po odlaczeniu zasilania. Po zdieciu napiecia zegar pamieta czas ale zatrzymuje sie, probowalem innych bibliotek i takiego problemu nie ma.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 33.0
28 November 2014 - 22:26 Bytom

Już nad tym pracuję, w niedzielę wgram nową wersję

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 33.0
01 December 2014 - 18:21 Bytom

poprawione i wgrane na git - dzięki za cynk

Avatar 1
Wojtek Windows 7 / Safari 537.36
28 August 2017 - 20:20 Brak informacji

Dotarłem tu niedawno, ale po wgraniu biblioteki nadal zatrzymuje czas z przykładu "simple"

Avatar 1
me Windows 7 / Mozilla Firefox 33.0
05 December 2014 - 16:02 Brak informacji

Thrusday should be Thursday edit cpp file !
Setting min at 08 is ok but 09 error !
Hope to see Temperature ie: 20.25 and 20.3 (short) would be great.

Thank you for your library

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 33.0
06 December 2014 - 16:45 Bytom

Typo was fixed and uploaded to git :) thanks

You can paste the code causing the error?

About Temperature, you can do it by:

Serial.println(clock.readTemperature(), 0); => 20
Serial.println(clock.readTemperature(), 1); => 20.3
Serial.println(clock.readTemperature(), 2); => 20.25

Avatar 1
me Windows 7 / Mozilla Firefox 33.0
07 December 2014 - 08:23 Brak informacji

Thanks for the typo fix and temperture info.
The error seems to be the way I entered the value, so no problem with single char 9 min but 09 gives.. error: invalid digit "9" in octal constant.
Just the way I entered the value and bad memory !, appreciate your help and great work.

Avatar 1
zipp Windows 7 / Safari 537.36
06 December 2014 - 20:39 Kęty

W jaki sposób wyłączyć alarm, dajmy na to w przykładzie DS3231_alarm.ino.
Polecenie clock.armAlarm1(false) go nie wyłącza. Odczytując stan alarmu clock.isArmed1() mam niby wynik false, ale i tak alarm o zadanym czasie się uaktywnia.

Avatar 1
MN Windows / Safari 537.36
08 May 2017 - 18:17 Brak informacji

Alarms once set continue to run. There is no way to disable them. so alarms once set keeps occuring and if you read their status they show as having occured. The key is in the meaning of disarm/turn off. turn off means the alarm is prevented from raising an interrupt.

Avatar 1
ojdas Windows 7 / Safari 537.36
09 December 2014 - 23:09 Warszawa

Witam,

Mam podłączony taki moduł do Arduino http://www.dx.com/p/ds3231-high-precision-real-time-clock-module-blue-3-3-5-5v-222910

Niestety po odłączeniu zasilania czas i data zostają przywrócone do ostatniej aktualizacji. Nie występuje podtrzymanie na baterii danych...

Co może być tego przyczyną?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 30.0
10 December 2014 - 14:11 Katowice

Po ustawieniu aktualnego czasu musisz wywalić clock.setDateTime(__DATE__, __TIME__); i wgrać program raz jeszcze. W przeciwnym razie po wyłączeniu i włączeniu ustawia Ci ponownie datę i godzinę kompilacji :)

Avatar 1
Artur Windows 7 / Safari 537.36
09 January 2015 - 04:47 Brak informacji

Missing "KEYWORD" file in library

Avatar 1
Ian Windows 7 / Mozilla Firefox 35.0
13 February 2015 - 11:56 Brak informacji

lcd.print(clock.dateFormat("jS", dt));
The day should read 11th, 12th, 13th but is 11st, 12nd, 13rd.

I am trying to also change the backlight brightness on 1602 LCD with PWM, by the time of day. So if the time was >10pm but <6am brightness = 127; analogWrite(9,brightness);
I can do this in alarm or is there a simpler way.
Thanks.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
25 February 2015 - 21:01 Bytom

I will fix it in next release, thanks!

Avatar 1
Ian Windows 7 / Mozilla Firefox 36.0
06 April 2015 - 05:00 Brak informacji

char *DS3231::strDaySufix(uint8_t day)
{
if (day == 01 || day == 21 || day == 31)
{
return "st";
} else
if (day == 02 || day == 22)
{
return "nd";
}
if (day == 03 || day == 23)
{
return "rd";
}

return "th";
}

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
07 April 2015 - 18:39 Bytom

What version IDE do you use?

Avatar 1
Ian Windows 7 / Mozilla Firefox 37.0
09 April 2015 - 14:09 Brak informacji

Tested on IDE v1.6.1 works fine now with the above code change to DS3231.cpp

Avatar 1
mac Android 4.4 / Safari 537.36
22 February 2015 - 20:07 Brak informacji

Chciałbym z użyciem tego modułu wykonać pewien impulsator, który dokładnie co minutę wykona określoną funkcję (zmiana stanu dwóch pinów cyfrowych). Ta funkcja będzie sterowała cewką tzw. zegara wtórnego dlatego dokładność (regularność) wywoływania tej funkcji jest kluczowa i nie mogę tu użyć zwykłego delay() bo jest to mało dokładne.
Czy dobrze kombinuję, że powinienem użyć opisanego tu alarmu, ustawić go na minutę i w ramach alarmu wykonać potrzebną mi funkcję? Czy przypadkiem czas wykonania samej funkcji nie wpłynie na wywołanie kolejnego alarmu, a tym samym kolejnego wywołania fynkcji po upływie kolejnej minuty?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
25 February 2015 - 21:00 Bytom

Tak, najlepiej użyć do tego alarmu - podepnij go pod przerwanie int0 i będzie gites. Funkcja nie będzie wykonywać się całą minutę zakładam :)

Avatar 1
Tomek Windows 7 / Mozilla Firefox 35.0
25 February 2015 - 21:17 Elbląg

Chciałbym zrobić dodatkowe alarmy, i chcę się zapytać czy można np wywoływać co sekundę wartość funkcji clock.dateFormat("H:i:s - l", dt)) i porównać do zmiennej Budzik1(jakaś godzina w konkretnym dniu tygodnia np "00:00:28 - Friday") która określa ten czas alarmu.
Jaki postawić poprawnie taki warunek porównania Budzik1 do clock.dateFormat("H:i:s - l", dt))?

Avatar 1
mac Windows 7 / Safari 537.36
04 March 2015 - 00:47 Brak informacji

Właśnie podpiąłem sobie ten moduł do UNO i testuję wraz z LCD po I2C. Dziwna sprawa jest, że co kilkanaście sekund resetuje się układ i inicjalizuje znowu wyświetlacz. To pewnie nie jest wina samego zegara.
Drugi problem jest chyba jednak z zegarem związany bo mam wrażenie, że czasem sekundy są pomijane i wskakuje jakby co druga. Wygląda jakby zegar przyspieszał. Czy kto widział taki efekt?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
07 April 2015 - 18:40 Bytom

Problem z odczytywaniem sekund może być to, że nie wyrabiasz się z odczytaniem :) np, jeśli Twój program robi coś dwie sekundy, to przy następnym odczycie pominie

Avatar 1
Kamil Windows / Safari 537.36
15 May 2015 - 21:07 Warszawa

Witaj,
wgrywam twój kod, a po serialu sprawdzając pojawia się
Raw data: 2005-4-1 0:1:0
Raw data: 2005-4-1 0:1:1
Raw data: 2005-4-1 0:1:0
Raw data: 2005-4-1 0:1:1
Raw data: 2005-4-1 0:1:0
Raw data: 2005-4-1 0:1:1

wiesz może w czym problem? bardzo będę wdzięczny za pomoc, cały dzień to męczę...

Avatar 1
Luqasek Windows / Safari 537.36
29 November 2016 - 21:55 Brak informacji

Mam podobny problem, też się z tym męczę drugi dzień. Wgrywam DS3231_simple i po odpaleniu serial monitora mam coś takiego:
Initialize DS3231
Raw data: 2016-11-29 21:49:43
Raw data: 2000-1-1 0:0:0
Raw data: 2000-1-1 0:0:0
Raw data: 2000-1-1 0:0:0
Raw data: 2000-1-1 0:0:0
Raw data: 2000-1-1 0:0:0
Raw data: 2000-1-1 0:0:0
...

Co mogę robić źle??

Avatar 1
b3ndo Windows XP / Mozilla Firefox 38.0
15 June 2015 - 18:22 Brak informacji

Witam, GY-87 (MPU6050) i ZS-042 (DS3231SN), oba mają adres I2C "068" jest jakiś prosty sposób, jak ich używać razem z Leonardem? Dziękuję.

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
16 June 2015 - 00:00 Bytom
Avatar 1
Mamut Windows 7 / Mozilla Firefox 38.0
19 June 2015 - 00:19 Brak informacji

Hi,
thanks for the library, it\'s nice.

I work with unixtime and I\'m found a small problem in converting between local human time and unixtime.

Correct is:
uint16_t DS3231::date2days(uint16_t year, uint8_t month, uint8_t day)
{
.......
if ((month > 2) && isLeapYear(year))
{
........

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 June 2015 - 01:10 Bytom

Ok, thanks! I will fix it in next release

Avatar 1
Moriusz Windows 7 / Mozilla Firefox 38.0
20 June 2015 - 11:51 Brak informacji

Powiedz mi czy ten uklad ma wbudowana wewnetrzna pamiec ? ktora jest podtrzymywana bateryjnie i jak mozna z niej skozystac?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 June 2015 - 14:20 Bytom

Niestety nie ma, ale możesz skorzystać z pamięci EEPROM w atmedze

Avatar 1
Moriusz Windows 7 / Mozilla Firefox 38.0
20 June 2015 - 15:05 Brak informacji

Chodzi mi pamiec ktora sie nie nadpisze po zmianie programu... potrzebuje do mojej pogodynki...

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 June 2015 - 15:11 Bytom

to nie ma :) wciąż pozostaje ci pamięć eeprom w osobnym układzie

Avatar 1
Moriusz Windows 7 / Mozilla Firefox 38.0
20 June 2015 - 15:37 Brak informacji

cos godnego polecenia?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 June 2015 - 19:55 Bytom

Praktycznie dowolna pamięć eeprom :) https://kamami.pl/16-eeprom byle i2c

Avatar 1
rtc 3231 error Windows / Safari 537.36
07 July 2015 - 22:04 Brak informacji

There have some error with ds3231 alarm in

// Set Alarm - Every full minute.
// DS3231_EVERY_MINUTE is available only on Alarm2.
// setAlarm2(Date or Day, Hour, Minute, Second, Mode, Armed = true)
clock.setAlarm2(0, 0, 0, 0, DS3231_EVERY_MINUTE);

***error message show ****

Arduino: 1.6.1 (Windows 8.1), Board: "Arduino Mega or Mega 2560, ATmega2560 (Mega 2560)"

DS3231_alarm.ino: In function \'void setup()\':

DS3231_alarm.ino:41:50: error: invalid conversion from \'int\' to \'DS3231_alarm2_t\' [-fpermissive]

In file included from DS3231_alarm.ino:10:0:

C:UsersKetsayaiDocumentsArduinolibrariesArduino-DS3231-master/DS3231.h:119:7: error: initializing argument 4 of \'void DS3231::setAlarm2(uint8_t, uint8_t, uint8_t, DS3231_alarm2_t, bool)\' [-fpermissive]

void setAlarm2(uint8_t dydw, uint8_t hour, uint8_t minute, DS3231_alarm2_t mode, bool armed = true);

^

Error compiling.

This report would have more information with
"Show verbose output during compilation"
enabled in File > Preferences.

could you fix this.

Avatar 1
Mac Windows 7 / Safari 537.36
16 July 2015 - 15:45 Brak informacji

Jak to jest z podłączeniem diody na wyjściu SQW/OUT. Na powyższym filmie jest mowa o podłączeniu między +5V i tym wyjściem, a na schemacie, który widzę w opisie DS1307

Oryginalny obraz posiada rozmiar 600x245

wyglądą, że dioda jest między masą, a wyjściem SQW/OUT.
To jak w końcu powinno być?

Avatar 1
ArekP Windows 7 / Mozilla Firefox 41.0
08 October 2015 - 13:05 Moszczenica

Led1 powinna być podpięta do 5V (VCC). Wy 7 układu podaje masę (otwarty dren, kolektor).
Wyżej w opisie jest ten sam błąd:
"...jeśli chcemy wykorzystać do nich diodę LED, należy podłączyć tutaj katodę - anodę zaś do masy."

Avatar 1
Comol Windows 7 / Safari 537.36
07 September 2015 - 22:20 Warszawa

Witam!

Mam pytanie... jak zrobić aby monitor szeregowy wyświetlał czas zegara RTC co sekundę ale bez użycia funkcji delay. Ja tak zrobiłem (na układzie ds1307):

psec = sec;
DateTime now = rtc.now();
sec = now.second();
if (sec != psec)
{
digitalWrite(9, HIGH);
delay(5);
digitalWrite(9, LOW);
}

Powyższy "cytat" jest częścią programu który sczytuje dokładny atomowy czas z sygnału DCF77, następnie nastawia zegar RTC. W układzie są dwie diody 1 zapala się gdy w sygnale dcf wystepuje zbocze narastające wywołujące przerwanie (znacznik sekundy) druga dioda zapala się gdy sekunda na rtc jest różna od poprzedniej (powyższy kod programu) Problem polega na tym że obydwie diody powinny się zapalać niemal jednocześnie (czas pomiędzy ich zaświeceniem determinuje czas wykonania programu który wynosi około 0.02 s). W praktyce czas między zaświeceniem obydwu diod jest zmienny. Podejrzewam że przyczyną jest niestabilność zegara ds1307. Planuje w moim projekcie zastąpić go tu opisywanym ds3231...mam nadzieje że pomoże.
ma ktoś jakieś pomysły?

Avatar 1
Werniks Linux x86_64 / Safari 537.36
17 September 2015 - 06:59 Łódź

Najprostszym rozwiązaniem będzie użycie timerów. Są dostępne biblioteki do uruchomienia timerów na płytkach z AVR jak i ARM. Jest to bardziej eleganckie, wygodne i racjonalne (można używać w Due kilku timerów jednocześnie) i nie powoduje "leżenia mikrokontrolera odłogiem".

Avatar 1
mr.ansaripour Windows 7 / Mozilla 11.0
17 April 2016 - 06:34 Brak informacji

Hi
I Use This Library on UNO Board But it doesn\'t work well on DUE Board. Can you help me for How I Use this library on DUE Board?
Thanks

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
26 April 2016 - 23:49 Bytom

Sorry, I dont have duo yet. Maybe soon

Avatar 1
zbigniew169 Windows 7 / Safari 537.36
06 October 2015 - 11:50 Warszawa

Biblioteka do obsługi DS3231 jest naprawdę znakomita, ale jest jeden problem: tak zwany czas letni. Sam DS3231 nie ma "na pokładzie" obsługi tej bzdury, ale bez tego trzeba ręcznie "przestawiać" czas na "letni" - "zimowy".
Bardzo gorącą prośba do autora o dadanie tej opcji.

[P.S. Wszystko przez to że pewnemu amerykańskiemu idiocie zachciało sie łapać motyle. Niestety niektórzy na całym Świecie to podchwycili.]

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 41.0
19 October 2015 - 22:44 Bytom

Obliczenie czasu zimowego / letniego - to nie jest takie proste zagadnienie :) Ale postaram się coś wykombinować

Avatar 1
zbigniew169 Windows 7 / Safari 537.36
20 October 2015 - 08:27 Warszawa

Ja dopiero po tygodniu zrozumiałem jaką gafę strzeliłem, uważając że "problem czasu letniego" to coś banalnego. Sam nie mam żadnych kompetencji aby "dłubać w kodzie", ale wpis na tym forum:

http://forums.parallax.com/discussion/162371/rtc-and-dst

wydaje mi się wielce interesujący.

Avatar 1
itepe Windows / Safari 537.36
13 March 2018 - 13:55 Brak informacji

Super biblioteka!
W kwestii czasu letniego/zimowego, rozwiązałem to banalnie - użyłem przycisku, który dodaje lub odejmuje godzinę i po sprawie (zbyt często się tego nie używa przecież). Ale jest ALE i to jak widzicie duże. Przycisk można przypadkiem kliknąć - no problem, odklikam i mam ponownie bieżący czas. Tu jednak pojawia się pewien problem: otóż, przy dokładności zegara rzędu 1 min / rok pojawiają się opóźnienia. Ale do rzeczy:
Przykładowo używam korekty czasu na zimowy:

clock.setDateTime(rok, miesiac, dzien, godzina + 1, minuta, sekunda);

zegar ustawia się prawidłowo, ALE zaczyna się późnić o około ~0,5 sekundy. Klejenia zmiana czasu zegara i kolejne ~0,5 sekundy się późni.
I teraz mam pytania:
- z czego to wynika? Czas obsługi I2C, zapisu w samym zegarze?
- czy i jak to kompensować?
- czy istnieje metoda ustawienia wyłącznie godziny bez użycia setDateTime?

Avatar 1
ssszmijka Windows 7 / Safari 537.36
28 October 2018 - 13:18 Brak informacji

Skoro poprzez nastawianie zegara tracisz o,5s, to nie lepiej jest w programie zmieniać czas?

Avatar 2
A. Francisco Windows / Safari 537.36
11 November 2015 - 13:33 Brak informacji

Dzień dobry,
Dobrym miejscem do nauki elektroniki. Dziękuję.
W stosunku do RTC DS3231 mają następujące pytania:

1. Jak Program 3 ALARM1 na dzień:
clock.setAlarm1 (0, 00, 00, 10, DS3231_MATCH_S);
clock.setAlarm1 (0, 00, 00, 20, DS3231_MATCH_S);
clock.setAlarm1 (0, 00, 00, 30, DS3231_MATCH_S);
W ten sposób działa tylko przez 30 sekund. Jak to zrobić?

2. Program WWW: DS3231_intalarm.ino OK?

Dzięki,
A. Francisco
(tłumaczenie na język polski z portugalskiego tłumacza Google)

Avatar 1
nurek Linux Ubuntu / Mozilla Firefox 42.0
26 November 2015 - 17:34 Brak informacji

Hi, Francisco - try to write in English, as the automated Google translation does not work properly for languages with more complex grammar :-)

Avatar 2
A. Francisco Windows / Safari 537.36
04 December 2015 - 17:21 Brak informacji

Hello,
A great place to learn electronics. My thanks.
Relative to the DS3231 RTC I have the following questions:
1. You can program Alarm1 three times on the same day, for example:
clock.setAlarm1 (0, 00, 00, 10, DS3231_MATCH_S)
clock.setAlarm1 (0, 00, 00, 20, DS3231_MATCH_S)
clock.setAlarm1 (0, 00, 00, 30, DS3231_MATCH_S);
As previously, only works for 30s.

2. The web program: DS3231_intalarm.ino OK?

Thank
A. Francisco

Avatar 1
Radek Linux x86_64 / Safari 537.36
17 December 2015 - 16:04 Brak informacji

Biblioteka dziala swietnie. Mam jednak problem z Alarmami. Obojetnie co nastawie w alarmie, SQW pulsuje co ok. sekunde (podlaczylem diode). Przetestowalem programy przykladowe z biblioteki na Arduino Mini i Pro.

Ma ktos podobne efekty?

Pozdrawiam
Radek

Avatar 1
Space Windows / Safari 537.36
29 December 2015 - 21:49 Poznań

Mam problem z wysyłaniem danych na wyświetlacz. Do przykładu dateFormat, chciałbym dodać opcję wysyłania daty i czasu na LCD.
Po załączeniu pliku nagłówkowego LiquidCrystal.h do kodu programu i odpowiednim zainicjowania pinów, do których podłączony został wyświetlacz (LiquidCrystal LCD(7,6,5,4,3,2);) oraz rozpoczęciu komunikacji w pętli setup okazuje się, że na LCD nie wyświetlają się nawet najprostsze komunikaty tekstowe w stylu "Hello". Z początku myślałem, że może wypisuję datę w złym formacie, ale jak wspomniałem wyżej - zwykły tekst również nie działa. W zamian na wyświetlaczu otrzymuje jakieś dziwne krzaczki, nie rozkodowywane są znaki tekstowe, czyli najprawdopodobniej program nie korzysta poprawnie z załączonej biblioteki wyświetlacza.

Kod oraz wyświetlacz wyglądają jak na załączonych zdjęciach:

Oryginalny obraz posiada rozmiar 615x893


Oryginalny obraz posiada rozmiar 1024x768

Czy ktoś wie z czego wynika problem? Dodam, że wyświetlacz działa prawidłowo przy kompilacji jakiegokolwiek innego szkicu. Sam zegar w serial monitorze również działa bez zarzutu.

Avatar 1
Krzychu Windows / Safari 537.36
31 December 2015 - 17:19 Warszawa

Świetna biblioteka dzięki ! Ale mam pytanie, jak by można ręcznie nastawić czas przez przyciski ? Pozdro

Avatar 1
MarcinT2525 Windows / Mozilla Firefox 50.0
25 November 2016 - 16:58 Brak informacji

Podbijam pod zapytanie, też jestem zainteresowany jak ten zegarek ustawiać z przycisków?

Avatar 1
Piter Windows 7 / Opera 9.80
27 January 2016 - 16:51 Świdnica

Witam.
Biblioteka na wyjściu SQW nie obsługuje czestotliwości 1024Hz
czy może ktoś to poprawić?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
04 February 2016 - 16:34 Bytom

No to plama z mojej strony. Przestudiowałem PDF i jednak jest błąd w definicji częstotliwości SQW. Poprawię to przed weekendem

Avatar 1
jgrolik Windows 7 / Mozilla Firefox 50.0
29 December 2016 - 21:06 Brak informacji

Na githubie dalej to samo.

Ogólnie źle przypisane częstotliwości SQW
Wg. pdf-a powinny być
1 Hz
1024 Hz
4096 Hz i
8192 Hz
adresowanie przez rejestry RS1 i RS2
32 KHz to osobne wyjście a nie INT/SQW

Avatar 1
jgrolik Windows 7 / Mozilla Firefox 50.0
29 December 2016 - 21:11 Brak informacji

Obsługuje 1024Hz tylko opisana jest jako 4096Hz :-)
Wystarczy spojrzeć do pdf-a na rejestry RS 1 i RS2

Avatar 1
wnekus Windows / Mozilla Firefox 43.0
06 February 2016 - 16:30 Brak informacji

Biblioteka nie kompiluje się dla DUE, mógłbyś to poprawić ??

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 43.0
09 February 2016 - 07:12 Bytom

No nie ma wyjścia :) Muszę kupić te DUO w końcu :)

Avatar 1
Sebastian Windows / Safari 537.36
19 April 2019 - 22:33 Brak informacji

Wystarczy zmienić nazwę klasy DS3231 z "clock" na np "clock1" i będzie działać.

Avatar 1
tytan Windows / Mozilla Firefox 44.0
11 February 2016 - 19:50 Poznań

Witam.
Fajna sprawa.
Mam pytanie czy ta biblioteka obsługuje ustawienie "Aging Offset"?
Mam gorącą prośbę do autora biblioteki o dodanie takiego polecenia. Zegar jest super ale możliwość dodatkowej kalibracji była by super sprawą.

Avatar 1
Soeren Windows 7 / Mozilla Firefox 44.0
12 February 2016 - 13:25 Brak informacji

Hi,
at first thank you very, very much for your libraries,
for me they work out of the box, great job :-)
I only got a problem with the example "DS3231_intalarm".
https://github.com/jarzebski/Arduino-DS3231/tree/master/DS3231_intalarm
No matter what i do, all i get is a signal of 1 Hz at pin SQW.
I`m using arduino 1.6.7
Btw., AFAIK the loop function should reset ""boolean isAlarm"
as well, so (to my mind) it should look like

void loop()
{
dt = clock.getDateTime();
Serial.println(clock.dateFormat("d-m-Y H:i:s - l", dt));

if (isAlarm)
{
digitalWrite(alarmLED, alarmState);
alarmState = !alarmState;
clock.clearAlarm1();
isAlarm = false; // correct?
}

delay(1000);
}

Any ideas concerning my 1Hz-Problem?
Thanks in advance.
Best regards,
Soeren

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
27 March 2016 - 01:51 Bytom

I will fix it on next release.

Avatar 1
Tom Windows 7 / Safari 537.36
03 November 2016 - 15:33 Łódź

Ekstra biblioteka. Wiesz moze kiedy bedzie nowa wersja (poprawki) bo last commit was on Dec 6, 2014 ?

Avatar 1
Alarm Problems!! Windows 7 / Mozilla 11.0
16 March 2016 - 23:38 Brak informacji

Hello!

A lot of peoples have some Trouble with the Alarm and other funktions from that library, cause of the not descriped functions! all that People try to use that great library (thanks for that) but spend a lot of time to try out whats happend behind the funktions. also i have the ,,Feeling,, that the alarmClear function dont work. What this library will be much greater is an detailed description of her funktions.

Thanks for that !

Marc

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
27 March 2016 - 01:47 Bytom

Thanks for report. I will fix that soon

Avatar 1
nowy Linux / Mozilla Firefox 38.0
25 March 2016 - 15:06 Brak informacji

Witam!
Po wgraniu programu (sterowanie wyjściem 32kHz oraz SQW/INT) do arduino pro mini podłączyłem miernik do pinu (DS3231) 32K i GND i widzę, że napięcie zmienia się co 2 sekundy od 1.02V do 3.5V. Dlaczego napięcie nie spada do 0V?

Podłączając natomiast miernik do pinu SQW i GND napięcie od 0.1V do 3.36V. Dlaczego w tym przypadku napięcie nie zmienia się co 2 sekundy tak jak zostało to ustawione w programie?

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
27 March 2016 - 01:50 Bytom

stan niski TLL nie musi być 0V - standard mówi, że jest to wartość <= 0.8V.

Avatar 1
tytan Windows / Mozilla Firefox 45.0
29 March 2016 - 18:05 Poznań

Prośba o podpowiedź lub update biblioteki w jaki sposób ustawiać Aging Offset?

Avatar 2
śruba Windows / Mozilla Firefox 45.0
31 March 2016 - 23:56 Elbląg

Prośba o jakiś sensowny poradnik jak sprzęgnąć Arduino + GSM Sim900A + RTC DS3231

Funkcje typowego modułu powiadamiania czyli wysyłanie SMS z informacją o wystąpieniu zdarzenia, testowanie modułu raz na dobę poprzez dzwonienie na zaprogramowany nr. telefonu i rozłączenie np. po dwóch dzwonkach (tzw. clip)

Avatar 1
nowy Linux / Mozilla Firefox 38.0
04 April 2016 - 07:55 Brak informacji

Takich poradników jest bardzo dużo możesz np. ten przerobić http://www.induino.com/2013/11/interfacing-serial-devices-part-3.html

Avatar 1
k@Mil Windows 7 / Safari 537.36
25 November 2016 - 12:23 Brak informacji

Nie potrzebujesz zegara jak masz sim900
Kawałek kodu gdzie pobieram czas z modemu

sim800.println("AT+CCLK?rn ");//Pobierz czas
delay(500);
if (sim800.find(":")) { // decode reply
while (sim800.available()) {
char c = sim800.read();
if (c != \'n\')
getGSMTimestamp += c;
else getGSMTimestamp +=" ";
}

}

Avatar 1
nowy Linux / Mozilla Firefox 38.0
04 April 2016 - 07:48 Brak informacji

Witam!

W tym https://github.com/jarzebski/Arduino-DS3231/blob/master/DS3231_intalarm/DS3231_intalarm.ino przykładzie jest błąd. Do funkcji setup należy jeszcze dodać

clock.enableOutput(false);

a usunąć

clock.begin();

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
05 April 2016 - 06:58 Bytom

Dzięki za czujność.

Avatar 1
nowy Linux / Mozilla Firefox 38.0
04 April 2016 - 16:17 Brak informacji

Witam!

Chciałbym, aby alarm uruchamiał się co 12 godzin, ale nie jestem pewien, czy powinien on wyglądać tak jak poniżej?

clock.setAlarm2(12, 0, 0, DS3231_MATCH_H_M_S);

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 45.0
05 April 2016 - 06:58 Bytom

dopasowanie HMS jest dla konkretnego czasu - czyli w tym przypadku codziennie o 12:00:00

Avatar 1
nowy Linux / Mozilla Firefox 38.0
05 April 2016 - 09:21 Brak informacji

Witam!

Czy można ustawić uruchamianie alarmu co 2 minuty? Ustawiłem wyzwalanie alarmu co 120 sekund, ale on uruchamia się co 1 minutę.

clock.setAlarm1(0, 0, 0, 120, DS3231_MATCH_S);

Dzięki za info.

Avatar 1
jimdo Windows / Safari 537.36
12 April 2016 - 20:19 Brak informacji

Hello great work.

I use "clock.setAlarm1(0, 0, 0, 20, DS3231_EVERY_SECOND);" to have an alarm after 20s but i measure on interrupt pin2 LOW all the time.
If i use "clock.setAlarm1(0, 20, 15, 10, DS3231_MATCH_H_M_S);" it works corect, i get LOW only in specific time.

Thanks

Avatar 1
Arduino Zero Windows 7 / Safari 537.36
09 July 2016 - 19:27 Warszawa

Trafiłem na pewien problem przy kompilacji Pana przykładowych programów z github, (mam Arduino Zero) pojawia się szereg błędów, który sugeruje, że biblioteka nie jest kompatybilna z Adruino Zero? Kompilowałem programy dla Arduino Uno i nie było żadnego problemu.
Jest jakiś sposób na obejście problemu?

Avatar 1
Lukacjusz Windows / Safari 537.36
28 July 2016 - 12:44 Czersk

Witam, a czy jest możliwość ustawienia innych częstotliwości jak te:
case DS3231_1HZ: Serial.println("SQW = 1Hz"); break;
case DS3231_5HZ: Serial.println("SQW = 5Hz"); break;
case DS3231_4096HZ: Serial.println("SQW = 4096Hz"); break;
case DS3231_8192HZ: Serial.println("SQW = 8192Hz"); break;
case DS3231_32768HZ: Serial.println("SQW = 32768Hz"); break;

Na wyjściu SQW ??

Wydaje się że są one ustawione na sztywno w bibliotece ds3231.h

typedef enum
{
DS3231_1HZ = 0x00,
DS3231_4096HZ = 0x01,
DS3231_8192HZ = 0x02,
DS3231_32768HZ = 0x03

Czy można dodać własne? jak to jakie adresy?
Dzięki.

Avatar 1
Wojtek Windows 7 / Safari 537.36
23 February 2018 - 12:46 Brak informacji

Ja też szukam takiej odpowiedzi...

Avatar 1
Paweł Windows / Safari 537.36
23 October 2016 - 14:24 Brak informacji

Witam, jestem początkującym użytkownikiem Arduino i kupiłem coś takiego: https://botland.com.pl/moduly-rtc/3790-zegar-czasu-rzeczywistego-modul-rtc-ds3231-i2c-bateria.html .Jak mam to podłączyć do Arduino? Jakiej biblioteki użyć?

Avatar 1
Marcin Windows 7 / Mozilla Firefox 49.0
08 November 2016 - 22:50 Warszawa

Dzień dobry,
Potrzebuję zapisać godzinę unix do zmiennej typu long int by móc ją porównywać z inną zmienną typu long. Istnieje taka możliwość?
W grę wchodzi również przypisanie aktualnej sekundy do zmiennej typu int. Jeśli, ktoś wie jak to zrobić to proszę o pomoc.

Avatar 1
Mateusz Windows 8 / Mozilla Firefox 50.0
03 December 2016 - 17:24 Warszawa

Witam serdecznie,
przy podawaniu roku mam problem, bo gdy podam rok poniżej 2000 lub powyżej 2159 pokazują się dziwne wyniki. Czy da się coś z tym zrobić?

Avatar 1
Robert Linux x86_64 / Safari 537.36
04 December 2016 - 17:39 Poznań

Cześć,

Masz poważne błędy w tej bibliotece niestety. Np. w metodzie dateFormat() zwracasz adres zmiennej lokalnej...
Dlatego mi ta metoda nie działała, a gdy zacząłem sprawdzać, to zobaczyłem dlaczego :)

Jeśli chcesz, to na priv mogę podesłać diffy DS3232.{h,cpp} bo trochę pozmieniałem rzeczy, które mnie najbardziej gryzły w oczy, np. metody które nie operują na żadnych składowych klasy powinny być statyczne - bo tylko po to aby ich użyć musisz tworzyć instancję klasy.

Taka mała porada: zwracaj proszę uwagę również na warningi z kompilacji a nie tylko na błędy - wtedy taki katastrofalny błąd jak zwrócenie adresu do zmiennej lokalnej kompilator Ci złapie...

Ale poza tym oczywiście kawał dobrej roboty :) Pzdr.

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 50.0
19 January 2017 - 18:21 Bytom

Cześć Robert, chętnie skorzystam z sugestii - wysłałem Ci email w tej sprawie

Avatar 1
Dawid Linux Ubuntu / Mozilla Firefox 58.0
10 March 2018 - 18:44 Katowice

Witam też mam problem z dateFormat() , potrzebuję poprawnej wersji

Avatar 1
Dominik Windows / Safari 537.36
11 September 2019 - 23:58 Brak informacji

Też mi to nie działa czy jest poprawiona wersja ?

Avatar 1
Emilos Android 7.0 / Safari 537.36
09 October 2019 - 02:43 Brak informacji

Zerknij w komentarze poniżej, problem ma rozwiązanie ;)

Avatar 1
Kazio Windows / Mozilla Firefox 50.0
15 January 2017 - 16:13 Warszawa

Przy odliczaniu kolejnego dnia roku jest podawany wczorajszy dzień.
Pierwszy dzień nowego roku został wyświetlony jako dzień "0".
Co z tym można zrobić.
Dziękuję za odpowiedź.

Avatar 1
zipp Windows 7 / Mozilla Firefox 51.0
28 January 2017 - 02:05 Kraków

w:
uint16_t DS3231::dayInYear(uint16_t year, uint8_t month, uint8_t day)

zmienić to
fromDate = date2days(year, 1, 1);
na to
fromDate = date2days(year, 1, 0);
;-)

Swoją drogą autor mógłby nanieść poprawki, skoro tyle razy obiecywał :D
Dziękuję za już i liczę, że się będzie chciało chcieć.
pozdr.

Avatar 2
Korneliusz Linux Ubuntu / Mozilla Firefox 51.0
28 January 2017 - 11:43 Bytom

wchodzisz na githuba, robisz forka i poprawiasz co tam chcesz :)

Avatar 1
zipp Windows 7 / Mozilla Firefox 51.0
28 January 2017 - 02:07 Kraków

i nie Kraków a Gliwice, jakby co
(lol)

Avatar 1
Klima Mac OS X / Mozilla Firefox 51.0
30 January 2017 - 22:04 Warszawa

Witam, mam problem z zatrzymywaniem się czasu przy braku zasilania, mam baterie, czas sie podtrzymuje ale nie odlicza się. Gdzie zmienić parametr aby zegar pracował z baterii ?!

Avatar 1
Kazio Windows / Mozilla Firefox 51.0
31 January 2017 - 21:13 Warszawa

Witam serdecznie

Jestem pod wrażeniem.Gratuluję wiedzy.
Po dokonaniu wpisu

w:
uint16_t DS3231::dayInYear(uint16_t year, uint8_t month, uint8_t day)

zmienić to
fromDate = date2days(year, 1, 1);
na to
fromDate = date2days(year, 1, 0);
;-)

wszystko dział normalnie.

Bardzo dziękuję za pomoc.

Avatar 1
marw Windows / Mozilla Firefox 51.0
10 February 2017 - 18:38 Warszawa

Witam!

Wszystko nawet działa poprawnie na Arduino Mega 2560. Jednak po wgraniu intalarm (bez ustawiania daty na rok 2014) po ustawieniu alarmu na każdą 20sekundę minuty, alarm jest wywoływany co sekundę..

Co jednak bardziej mnie interesuje:
Czy jest możliwość, by na zegar na sqw dawał sygnał, po odłączeniu go całkowicie od arduino, tzn. na samym zasilaniu z baterii? Potrzebuję to do projektu, w którym alarm z tego zegara uruchomi zasilanie reszcie układu.

Pozdrawiam,
marw

Avatar 1
Cezz Windows / Mozilla Firefox 52.0
29 March 2017 - 11:58 Brak informacji

Po raz kolejny wraca problem z ustawianiem czasu przyciskami(czas letni /zimowy). Jest z tym jakiś dziwny problem, próbowałem załadować do int-ów aktualną wartość od roku do sekund za pomocą(dt.year).. (dt.second) wykonać ++ na godzinie i jednokrotnie wykonać clock.setDateTime(2014, 4, 13, 19, 21, 00); w miejsce danych podstawiając ww. int-y, ale na zegarze wychodzą jakieś bzdury. Może trzeba użyć jakiś innych zmiennych ?
Czy ktoś by się pokusił o zrobienie działającego fragmentu kodu, w którym można dodawać i odejmować godziny ?

Avatar 1
KM Windows / Safari 537.36
01 January 2018 - 20:26 Warszawa

Też mam problem ze zmianą ustawień DS3221 z przycisków. Nic mi nie wychodzi. Może ktoś widział gdzieś coś co działa. Pozdrawiam

Avatar 1
elBeton Windows / Mozilla Firefox 57.0
09 January 2018 - 20:49 Częstochowa

U mnie działa np. tak.

RTCDateTime setdt;
...
setdt.year = 2018;
setdt.month = 1;
setdt.day = 9;
setdt.hour = 12;
setdt.minute = 15;
setdt.second = 0;
clock.setDateTime(setdt.year, setdt.month, setdt.day, setdt.hour, setdt.minute, setdt.second );

oraz wszelkie operacje typu setdt.minute++; działają.

Avatar 1
lukas2016 Windows 7 / Safari 537.36
04 April 2017 - 10:43 Rybnik

Mam arduino 1.6.8 i 1.8.1 na dwóch różnych sprzętach i wyskakuje mi error przy kompilacji : warning: deprecated conversion from string constant to \'char*\' [-Wwrite-strings] x dużo
Przejmować się tym ?

Avatar 1
tomek Windows 7 / Mozilla Firefox 54.0
21 June 2017 - 19:39 Brak informacji

Hej, czy funkcja clock.clearAlarm1() na pewo działa? Wywoływanie jej nie powoduje żadnej istotnej róznicy.

Avatar 1
Mariano Android 7.0 / Safari 537.36
30 August 2017 - 14:25 Brak informacji

Zasadnicze pytanie czy biblioteka wspiera 8266, bo na arduino działa sprawnie.

Avatar 1
Pixpix Windows 7 / Safari 537.36
31 August 2017 - 16:34 Tychy

Czy w twojej bibliotece jest timeout przy braku połączenia z RTC? Spotkałem się z głupią sytuacją: wyciągłem sobie kabelek z SDA i układ się zawiesił przy odczycie zegara - tak jakby czekał na odpowiedź. I czekał godzinami (min 4 godziny). Może jakaś funkcja sprawdzająca czy RTC działa?

Avatar 1
Bekerk Windows 7 / Safari 537.36
23 September 2017 - 20:27 Brak informacji

Czy mógłbym prosić o krótki i jak najprostszy scatch do ustawienia zegara. Program powinien ustawić godzinę ze zmiennych. Przykładowo int godz = godzina, którą chcę ustawić. Proszę o pomoc, nie mogę poradzić sobie z tym problemem.

Avatar 1
Maciek Windows 7 / Safari 537.36
16 October 2017 - 17:51 Poznań

A ja chciałbym wykorzystać Alarmy jako miejsce, gdzie można zapisać konkretną godzinę i skorzystać z tego później. Może tak się nie da ale zapytam.
Idea jest taka, żeby po np. naciśnięciu przycisku aktualna godzina została zapisana jako alarm, a po jakimś czasie ta wartość została sprawdzona i porównana z aktualną godziną. Mogę zapisać aktualną godzinę jako alarm, ale czy jest możliwość odczytania wartości ustawionego alarmu?

Avatar 1
About LeapYear calculation logic Windows / Mozilla Firefox 57.0
26 October 2017 - 01:43 Brak informacji

bool DS3231::isLeapYear(uint16_t year)
{
return (year % 4 == 0);
}

Seems must have be next logic

(year % 4 == 0) && ( (year % 100 != 0) || (year % 400 == 0) );

Avatar 1
Leszek Windows 7 / Mozilla Firefox 57.0
06 January 2018 - 10:45 Świdnica

Kupiłem sobie moduł ZS-042 z tym zegarem DS3231 na Aliexpress. Zrobiłem prosty zegarek z wyświetlaniem na LCD 20x4 i dziwna sprawa. Po 12 godzinach spieszy się jakieś 4 sekundy. To o wiele za dużo jak na deklarowaną 1 minutę na rok. Co może być nie tak?

Avatar 1
ElektroMiś Windows 7 / Safari 537.36
09 January 2018 - 21:49 Brak informacji

Witam, czy można przy użyciu tej biblioteki ustawić czas przy użyciu epoch. Czy też trzeba samemu sobie go przekonwertować do czasu w formacie yyyy,mm,dd hh:ii:ss ??

Avatar 1
ElektroMiś Windows 7 / Safari 537.36
10 January 2018 - 10:23 Brak informacji

Witam pobieram czas UNIX z internetu, w DS1307 można było ustawić zegar za pomocą czasu UNIX. Czy w DS3231 też będzie to działało ??
// UNIX timestamp
clock.setDateTime(1397408400);

Avatar 1
Wojtek Windows 7 / Safari 537.36
23 February 2018 - 12:23 Brak informacji

Jak ustawić inne częstotliwości SQW??

Avatar 1
Wojciech Windows / Mozilla Firefox 59.0
14 April 2018 - 03:39 Brak informacji

Dziękuję za super bibliotekę :-) Czy jest jakiś inny sposób ustawienia czasu niż funkcja clock.setDateTime? Problem polega na tym że zanim skończy kompilować i wgra skecz mika koło 20 sekund :-(
Na razie wpadłem tylko na pomysł żeby wykorzystać funkcję ustawiania ręcznego i napisać specjalnie do tego szkecz tak żeby można było ustawiać przez serial, ale może jest jakiś prostszy sposób, o którym nie wiem?

Avatar 1
Arduino 1.8.6 & DS3231 Windows 7 / Safari 537.36
30 August 2018 - 18:37 Brak informacji

Nowa wersja SW ARDUINO 1.8.6 mi Twoja biblioteka na DS3231 nie działa. Gdzie jest problem? Dziękuję za informacje :)

Avatar 1
Mecopias Windows / Safari 537.36
02 October 2018 - 19:34 Słupsk

Przyłączam się do poprzedniego postu. W nowej SW Android 1.8.7 biblioteka nie działa prawidłowo.

Avatar 1
Sebo1991 Android 6.0 / Safari 537.36
09 November 2018 - 07:45 Brak informacji

Z przykładu w tej Bibliotece, funkcja Dateformat nie pokazuje mi żadnych wartości o godzinie, data, upłyna czas itp. Co moze byc przyczyną? Arduino 1.8.5 wgrywane na Arduino Mega

Avatar 1
Wirefighter Linux x86_64 / Mozilla Firefox 60.0
17 November 2018 - 22:45 Brak informacji

Hello
Your code has an Error on clock.dateFormat sketch -> he show me no data from the rtc, but the sketch with raw data i can see the rtc\'s time/date

Whats the problem here?

thx for your supports to me :)

Avatar 1
fix Windows 7 / Mozilla Firefox 64.0
20 January 2019 - 13:55 Warszawa

Hej,

W pliku DS3231.cpp, w metodach dateFormat zmienna buffer powinna być statyczna czyli: static char buffer[255];

Pozdrawiam
KK

Avatar 1
Emilos Android 7.0 / Safari 537.36
09 October 2019 - 02:32 Brak informacji

Dziena brachu, naprawiło to problem formatu daty i czasu!

Avatar 1
DZ Windows / Safari 537.36
26 March 2019 - 13:58 Brak informacji

Hello. The library works on ESP8266 by ESP8266 Community v.2.5.0-beta2 or earlier and I really like the library.
But after updating the board to ESP8266 by ESP8266 Community v.2.5.0 in the example to the library, it began to generate an error "\'DS3231 clock\' redeclared as different kind of symbol".
I assume that the type of data is incorrectly defined in the library. Can you fix it?

And I think you need to add "yield" in function to avoid crash on ESP8266 if wiring is incorrect.

Avatar 1
Erfan Windows / Mozilla Firefox 66.0
05 April 2019 - 13:34 Brak informacji

clock.dateFormat() cannot return value!!!!
plz check.

Avatar 1
Greg_Leo Windows / Safari 537.36
31 May 2019 - 08:29 Brak informacji

Witam. Mam problem z skeczem DS3231_simple. Podczas kompilacji pojawia się błąd:
\'RTCDateTime\' does not name a type
W czym problem? Nic nie zmieniłem w kodzie, nawet spacji nie dodałem.
Pozdrawiam.

Avatar 1
tom Windows / Safari 537.36
03 July 2019 - 16:34 Lublin

Jak wywoływać jednym przyciskiem na ekranie lcd raz jeden napis, a po wciśnięciu przycisku drugi. Chodzi mi o wyświetlanie prędkości obrotów gramofonu gdy są ustawione na 45.00 obr/min to wyświetlacz pokazuje 45obr/min po przełączeniu prędkości na 33.33 wyświetlacz pokaże 33,33 obr/min.

Avatar 1
mariusz Linux x86_64 / Safari 537.36
02 February 2020 - 13:38 Malbork

Witam
Nie działa mi clock.dateFormat ani na wyswietlaczu ani w monitorze. kompiluje sie ale nic nie wyświetla.

Avatar 1
Jam Windows / Safari 537.36
09 February 2020 - 21:26 Łomża

Witam,
Na początku podziękowania za świetny materiał. Mam jednak problem z wyświetlaniem godziny przez dt.minute, a mianowicie nie wyświetla 0 (zera) przed pojedynczymi minutami. Nie zauważyłem, żeby ktoś z komentujących miał podobny problem.
Bardzo proszę o pomoc.

Pozdrawiam.

Avatar 1
kto to Windows / Mozilla Firefox 73.0
14 February 2020 - 00:10 Szczecin

dotyczy to godzin, minut i sekund o wartościach mniejszych niż 10. Sprawdzasz przed wyświetleniem danej wielkości, czy przypadkiem nie jest mniejsza niż 10. Jeśli tak jest, to w pierwszej kolejności dodajesz tzw. zero wiodące (jako tekst) a dopiero potem wyświetlasz liczbę godzin, minut lub sekund.

Avatar 1
YCE72 Windows 7 / Safari 537.36
20 April 2020 - 23:30 Brak informacji

if (dt.minute < 10)
{
display.print("0");
}

display.print(dt.minute);

i tak samo dt.hour.

Mi działa. Pozdrawiam

Avatar 1
Bartek Windows / Safari 537.36
25 February 2020 - 12:15 Brak informacji

Witam,
czy ktoś może ma wiedzę jak zaprządz płytkę z tym zegarem ZS-042 (oparta o DS3231) do obudzenia z "deep sleep" urządzenia opartego o ESP-32 dokładniej płytkę ttgo t-call. Bo walczę z tym już długo i nie radzę sobie. Wygląda to tak jakby u mnie na wyjściu był cały czas stan wysoki. Zasilanie ZS\'a jest z płytki i baterii. do niczego też nie wykorzystuje kostki 24c32. Poniżej link do schematu modułu ZS-042


Oryginalny obraz posiada rozmiar 1600x569

Avatar 1
YCE 72 Windows 7 / Safari 537.36
20 April 2020 - 23:34 Brak informacji

Witam. Super poradnik i strona na YT.

Mam problem z automatyczną zmianą godziny z czasu zimowego na letin i odwrotnie. Jest na to jakiś patent ? Pozdrawiam

Avatar 1
itepe Windows / Safari 537.36
30 April 2020 - 14:15 Brak informacji

Ciekawe - po ponad roku chcę zaktualizować swój zegar. I tutaj niespodzianka: dateFormat nie zwraca nic, ALE tylko na niektórych płytkach, jak np. Arduino Mega256, Nano, Mini. Na płytce D1 mini wszystko działa jak trzeba. Czy ktoś może to wyjaśnić?

Avatar 1
Frigos Windows 7 / Mozilla Firefox 75.0
05 May 2020 - 12:52 Łódź

Witam, najpierw słowa uznania za świetne teksty i biblioteki :) Prosiłbym o małe wyjaśnienie/komentarz:

jeżeli używam funkcji clock.setDateTime(2020,05,01,9,25,24);
w prostym skeczu do ustawiania i wyświetlania czasu wszystko działa OK, jeżeli natomiast ustawiam czas podając unixtime:
clock.setDateTime(1588325124);
to zegar pokazuje 1h później:

22:51:40.287 -> Initialize DS3231
22:51:40.287 -> Raw data: 2020-5-1 10:25:24
22:51:41.270 -> Raw data: 2020-5-1 10:25:25
22:51:42.300 -> Raw data: 2020-5-1 10:25:26

skąd ta różnica ?

Avatar 1
Marcin Windows / Safari 537.36
18 June 2020 - 20:50 Brak informacji

Witam.

Czy jest jakaś opcja żeby odpalić bibliotekę pod ESP8266?
Konsola zwraca takie błędy:

Arduino:1.8.13 (Windows 10), Płytka:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

DS3231_simple:12:8: error: \'DS3231 clock\' redeclared as different kind of symbol

DS3231 clock;

^

In file included from C:Userski_biAppDataLocalArduino15packagesesp8266hardwareesp82662.7.1/tools/sdk/libc/xtensa-lx106-elf/include/stdlib.h:11:0,

from C:Userski_biAppDataLocalArduino15packagesesp8266hardwareesp82662.7.1coresesp8266/Arduino.h:27,

from sketchDS3231_simple.ino.cpp:1:

C:Userski_biAppDataLocalArduino15packagesesp8266hardwareesp82662.7.1/tools/sdk/libc/xtensa-lx106-elf/include/../include/time.h:50:19: error: previous declaration of \'clock_t clock()\'

clock_t _EXFUN(clock, (void));

^

C:Userski_biAppDataLocalArduino15packagesesp8266hardwareesp82662.7.1/tools/sdk/libc/xtensa-lx106-elf/include/_ansi.h:65:30: note: in definition of macro \'_EXFUN\'

#define _EXFUN(name, proto) name proto

^

C:ArduinolibrariesArduino-DS3231-masterDS3231_simpleDS3231_simple.ino: In function \'void setup()\':

DS3231_simple:21:9: error: request for member \'begin\' in \'clock\', which is of non-class type \'clock_t() {aka long unsigned int()}\'

clock.begin();

^

DS3231_simple:24:9: error: request for member \'setDateTime\' in \'clock\', which is of non-class type \'clock_t() {aka long unsigned int()}\'

clock.setDateTime(__DATE__, __TIME__);

^

C:ArduinolibrariesArduino-DS3231-masterDS3231_simpleDS3231_simple.ino: In function \'void loop()\':

DS3231_simple:29:14: error: request for member \'getDateTime\' in \'clock\', which is of non-class type \'clock_t() {aka long unsigned int()}\'

dt = clock.getDateTime();

^

exit status 1

\'DS3231 clock\' redeclared as different kind of symbol

Oczywiście pod Nano działa bez problem.

Avatar 1
Mac Windows / Mozilla Firefox 78.0
18 December 2020 - 14:43 Warszawa

Bardzo fajny opis i biblioteka. Korzystam z niej w kilku projektach, a teraz jeden chciałem zmodyfikować dodając możliwość ustawiania czasu RTC na podstawie danych odebranych z DCF77. Korzystam z biblioteki Funkuhr.h, gdzie powinienem dostać dane dla roku, miesiąca, dnia, godziny, minuty, sekundy.
Biorę te wartości zdekodowane z odbiornika:

dcf.getTime(dt); //sprawdzenie sygnału z radia
rok = (dt.year, DEC) + 2000;
miesiac = (dt.month, DEC);
dzien = (dt.day, DEC);
godzina = (dt.hour, DEC);
minuta = (dt.min, DEC);
sekunda = (dt.sec, DEC);

i chciałem wpisać je do RTC korzystając z

clock.setDateTime(rok, miesiac, dzien, godzina, minuta, sekunda);

ale wynik jest niestety marny i zapisują się wartości 10 w każdej pozycji (z wyjątkiem oczywiście roku, który ma dodane 2000 więc jest 2010).
Czy masz jakieś sugestie w tej kwestii?