RTC DS1307 ? zegar czasu rzeczywistego

Moduł RTC DS1307 jest zegarem czasu rzeczywistego.

Materiały:

Dokumentacja układu DS1307 [pdf]

Biblioteka rtclib

Schemat (przykładowy):

RTC_DS1307_schemat

Płytka (zdjęcie):

RTC DS1307

RTC DS1307

Specyfikacja:

  • Napięcie zasilania: 5V
  • Pobór prądu: poniżej 500 nA
  • Interfejs komunikacyjny: I2C / TWI (SDA, SCL)
  • Częstotliwość odświeżania: 1 Hz
  • Dostępne dane:
    Czas: godzina (AM, PM), minuta, sekunda
    Data: miesiąc dzień, rok
  • Możliwość podtrzymywania danych przy pomocy baterii
  • Dokładny kalendarz do roku 2100
  • Pamięć wewnętrzna ogólnodostępna: 56 bajtów

Przykładowy kod (nietestowany), wymaga biblioteki RTClib.h:

// Date and time functions using a DS1307 RTC connected via I2C and Wire lib
 #include 
 #include "RTClib.h"
 RTC_DS1307 RTC;
 void setup () {
 Serial.begin(57600);
 Wire.begin();
 RTC.begin();
 if (! RTC.isrunning()) {
 Serial.println("RTC is NOT running!");
 // following line sets the RTC to the date & time this sketch was compiled
 //RTC.adjust(DateTime(__DATE__, __TIME__));
 }
 }
 void loop () {
 DateTime now = RTC.now();
 Serial.print(now.year(), DEC);
 Serial.print('/');
 Serial.print(now.month(), DEC);
 Serial.print('/');
 Serial.print(now.day(), DEC);
 Serial.print(' ');
 Serial.print(now.hour(), DEC);
 Serial.print(':');
 Serial.print(now.minute(), DEC);
 Serial.print(':');
 Serial.print(now.second(), DEC);
 Serial.println();
 Serial.print(" since 1970 = ");
 Serial.print(now.unixtime());
 Serial.print("s = ");
 Serial.print(now.unixtime() / 86400L);
 Serial.println("d");
 // calculate a date which is 7 days and 30 seconds into the future
 DateTime future (now.unixtime() + 7 * 86400L + 30);
 Serial.print(" now + 7d + 30s: ");
 Serial.print(future.year(), DEC);
 Serial.print('/');
 Serial.print(future.month(), DEC);
 Serial.print('/');
 Serial.print(future.day(), DEC);
 Serial.print(' ');
 Serial.print(future.hour(), DEC);
 Serial.print(':');
 Serial.print(future.minute(), DEC);
 Serial.print(':');
 Serial.print(future.second(), DEC);
 Serial.println();
 Serial.println();
 delay(3000);
 }

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *