Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/TimeRTC

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

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


Синхронизация времени с помощью 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. }

См.также

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

  1. github.com - TimeRTC.ino