Arduino:Примеры/TimeRTC

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

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


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

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

Код

 1 /*
 2 
 3 Синхронизация времени с помощью RTC
 4 
 5 Пример, демонстрирующий работу библиотеки Time с RTC 
 6 (от «Real Time Clock», что значит «часы реального времени»).
 7 
 8 */
 9 
10 #include <TimeLib.h>
11 #include <Wire.h>
12 #include <DS1307RTC.h>  // базовая библиотека DS1307, возвращающая время в типе данных time_t
13 
14 void setup()  {
15   Serial.begin(9600);
16   while (!Serial) ; // ждем открытия монитора порта в IDE Arduino
17   setSyncProvider(RTC.get);   // функция, считывающая время с RTC
18   if(timeStatus()!= timeSet) 
19      Serial.println("Unable to sync with the RTC");  //  "Не удалось синхронизироваться с RTC" 
20   else
21      Serial.println("RTC has set the system time");  //  "RTC настроено на системное время"  
22 }
23 
24 void loop()
25 {
26   if (timeStatus() == timeSet) {
27     digitalClockDisplay();
28   } else {
29     Serial.println("The time has not been set.  Please run the Time");  //  "Время задано не было. Пожалуйста, запустите"
30     Serial.println(" пример «Установка RTC-времени».");
31     Serial.println();
32     delay(4000);
33   }
34   delay(1000);
35 }
36 
37 void digitalClockDisplay(){
38   // показываем цифровые часы:
39   Serial.print(hour());
40   printDigits(minute());
41   printDigits(second());
42   Serial.print(" ");
43   Serial.print(day());
44   Serial.print(" ");
45   Serial.print(month());
46   Serial.print(" ");
47   Serial.print(year()); 
48   Serial.println(); 
49 }
50 
51 void printDigits(int digits){
52   // вспомогательная функция для печати данных о времени 
53   // на монитор порта; добавляет в начале двоеточие и ноль:
54   Serial.print(":");
55   if(digits < 10)
56     Serial.print('0');
57   Serial.print(digits);
58 }

См.также

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