SantyagoSantyago
YouTube RSS Google+ Facebook GitHub

Newsletter Arduino

Zapisz się do Newslettera, aby otrzymać informację o nowych wpsiach w dziale Arduino!

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

Sprzęt dostarczają

Reklama na Blogu

Najnowsze poradniki

Ostatnie komentarze

Popularne wpisy

Facebook

Google+

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: http://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: http://www.jarzebski.pl/datasheets/DS3231.pdf
Biblioteka Arduino: https://github.com/jarzebski/Arduino-DS3231

Udpstępnij dalej!

http://www.jarzebski.pl/arduino/komponenty/zegar-czasu-rzeczywistego-rtc-ds3231.html

Reklama

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

kolejny ciekawy wpis. Co kolejne bedzie? :)

Avatar 1
Piotr Budny Linux x86_64 / Safari 537.36
17 maj 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 maj 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 maj 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 maj 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 maj 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 maj 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 wrzesień 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 wrzesień 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 październik 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 listopad 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 listopad 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 listopad 2014 - 22:26 Bytom

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

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

poprawione i wgrane na git - dzięki za cynk

Avatar 1
me Windows 7 / Mozilla Firefox 33.0
05 grudzień 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 grudzień 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 grudzień 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 grudzień 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
ojdas Windows 7 / Safari 537.36
09 grudzień 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 grudzień 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 styczeń 2015 - 04:47 Brak informacji

Missing "KEYWORD" file in library

Avatar 1
Ian Windows 7 / Mozilla Firefox 35.0
13 luty 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 luty 2015 - 21:01 Bytom

I will fix it in next release, thanks!

Avatar 1
Ian Windows 7 / Mozilla Firefox 36.0
06 kwiecień 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 kwiecień 2015 - 18:39 Bytom

What version IDE do you use?

Avatar 1
Ian Windows 7 / Mozilla Firefox 37.0
09 kwiecień 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 luty 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 luty 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 luty 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 marzec 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 kwiecień 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 maj 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 listopad 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 czerwiec 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 czerwiec 2015 - 00:00 Bytom
Avatar 1
Mamut Windows 7 / Mozilla Firefox 38.0
19 czerwiec 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 czerwiec 2015 - 01:10 Bytom

Ok, thanks! I will fix it in next release

Avatar 1
Moriusz Windows 7 / Mozilla Firefox 38.0
20 czerwiec 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 czerwiec 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 czerwiec 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 czerwiec 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 czerwiec 2015 - 15:37 Brak informacji

cos godnego polecenia?

Avatar 2
Korneliusz Linux x86_64 / Mozilla Firefox 34.0
20 czerwiec 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 lipiec 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 lipiec 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 październik 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 wrzesień 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 wrzesień 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 kwiecień 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 kwiecień 2016 - 23:49 Bytom

Sorry, I dont have duo yet. Maybe soon

Avatar 1
zbigniew169 Windows 7 / Safari 537.36
06 październik 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 październik 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 październik 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 2
A. Francisco Windows / Safari 537.36
11 listopad 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 listopad 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 grudzień 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 grudzień 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 grudzień 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 grudzień 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 listopad 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 styczeń 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 luty 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 grudzień 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 grudzień 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 luty 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 luty 2016 - 07:12 Bytom

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

Avatar 1
tytan Windows / Mozilla Firefox 44.0
11 luty 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 luty 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 marzec 2016 - 01:51 Bytom

I will fix it on next release.

Avatar 1
Tom Windows 7 / Safari 537.36
03 listopad 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 marzec 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 marzec 2016 - 01:47 Bytom

Thanks for report. I will fix that soon

Avatar 1
nowy Linux / Mozilla Firefox 38.0
25 marzec 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 marzec 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 marzec 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 marzec 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 kwiecień 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 listopad 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 kwiecień 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 kwiecień 2016 - 06:58 Bytom

Dzięki za czujność.

Avatar 1
nowy Linux / Mozilla Firefox 38.0
04 kwiecień 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 kwiecień 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 kwiecień 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 kwiecień 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 lipiec 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 lipiec 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
Paweł Windows / Safari 537.36
23 październik 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 listopad 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 grudzień 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 grudzień 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 styczeń 2017 - 18:21 Bytom

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

Avatar 1
Kazio Windows / Mozilla Firefox 50.0
15 styczeń 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 styczeń 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 styczeń 2017 - 11:43 Bytom

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

Avatar 1
zipp Windows 7 / Mozilla Firefox 51.0
28 styczeń 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 styczeń 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 styczeń 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 luty 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

Skomentuj wpis