{
Serial.begin(57600);
Rtc.Begin();
// Если время не было установлено, установить его
if (!Rtc.IsDateTimeValid()) {
RtcDateTime compiled = RtcDateTime(__DATE__, __TIME__);
Rtc.SetDateTime(compiled);
}
// Запустить отсчет времени, если не запущен
if (!Rtc.GetIsRunning()) {
Rtc.SetIsRunning(true);
}
// Выход square wave не используется
Rtc.SetSquareWavePin(DS1307SquareWaveOut_Low);
}
void loop ()
{
if (!Rtc.IsDateTimeValid()) {
// Ошибка, возможно, пропадание питания при отсутствии батареи
Serial.println("RTC Error!");
return;
}
RtcDateTime now = Rtc.GetDateTime();
Serial.println(now.Year());
Serial.println(now.Month());
Serial.println(now.Day());
Serial.println(now.Hour());
Serial.println(now.Minute());
Serial.println(now.Second());
Serial.println();
// 10с пауза
delay(10000);
}
Код довольно-таки прост. Если часы DS1307 не установлены (функция IsDateTimeValid возвращает FALSE), то они устанавливаются с помощью констант __DATE__ и __TIME__ - они содержат время компиляции программы. Таким образом, при первом запуске в таймер будет автоматически занесено текущее время. Затем с помощью функции GetDateTime мы получаем время и дату, из которой можно узнать год, месяц, день, часы, минуты и секунды.
Теперь, загрузив программу в Arduino, мы можем отключить устройство. При последующем включении программа всегда будет “знать” текущее время.
Самостоятельная работа #1: сделать “вечернее освещение” с помощью Arduino и таймера, например, настроить зажигание светодиода с 23 вечера до 7 часов утра.