Arduino:Примеры/TimeRTC

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Синхронизация времени с помощью RTC (для остальных Arduino)[1]

Это скетч для библиотеки Time и платы Arduino, который демонстрирует, как использовать эту библиотеку вместе с часами реального времени (или просто RTC).

Код

/*

Синхронизация времени с помощью RTC

Пример, демонстрирующий работу библиотеки Time с RTC 
(от «Real Time Clock», что значит «часы реального времени»).

*/

#include <TimeLib.h>
#include <Wire.h>
#include <DS1307RTC.h>  // базовая библиотека DS1307, возвращающая время в типе данных time_t

void setup()  {
  Serial.begin(9600);
  while (!Serial) ; // ждем открытия монитора порта в IDE Arduino
  setSyncProvider(RTC.get);   // функция, считывающая время с RTC
  if(timeStatus()!= timeSet) 
     Serial.println("Unable to sync with the RTC");  //  "Не удалось синхронизироваться с RTC" 
  else
     Serial.println("RTC has set the system time");  //  "RTC настроено на системное время"  
}

void loop()
{
  if (timeStatus() == timeSet) {
    digitalClockDisplay();
  } else {
    Serial.println("The time has not been set.  Please run the Time");  //  "Время задано не было. Пожалуйста, запустите"
    Serial.println(" пример «Установка RTC-времени».");
    Serial.println();
    delay(4000);
  }
  delay(1000);
}

void digitalClockDisplay(){
  // показываем цифровые часы:
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print(" ");
  Serial.print(month());
  Serial.print(" ");
  Serial.print(year()); 
  Serial.println(); 
}

void printDigits(int digits){
  // вспомогательная функция для печати данных о времени 
  // на монитор порта; добавляет в начале двоеточие и ноль:
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

См.также

Внешние ссылки