Arduino:Библиотеки/Time
Содержание | Знакомство с Arduino | Продукты | Основы | Справочник языка Arduino | Примеры | Библиотеки | Хакинг | Изменения | Сравнение языков Arduino и Processing |
Библиотека Time [1][2]
Эта библиотека позволяет Arduino следить за временем, не используя для этого стороннее оборудование. Она позволяет скетчу получать информацию о текущем времени и дате: секунде, минуте, часе, дне, месяце и годе. Кроме того, она использует временной тип данных time_t (стандартный для языка C), что позволяет без труда рассчитать истекшее время и использовать полученные временные значения на разных платформах.
Дополнительную документацию ищите в файле «readme.txt», идущем в комплекте с библиотекой.
Загрузка
Чтобы загрузить библиотеку, пройдите по этой ссылке, кликните на зеленую кнопку Clone or download, а затем на Download ZIP. Когда ZIP-файл скачается, распакуйте его, а получившуюся папку переименуйте в «Time». Проверьте эту папку на наличие файлов «Time.cpp» и «Time.h».
Установка
Чтобы использовать библиотеку, поместите распакованный ZIP-файл в папку для библиотек IDE Arduino. Чтобы узнать, где находится эта папка на PC, откройте IDE Arduino, кликните на Файл > Настройки (File > Preferences) – адрес папки будет указан в самом верху, в поле «Размещение папки скетчей» (Sketchbook location). Затем перезапустите IDE Arduino. Если папки «libraries» нет, ее нужно создать.
Функции
Базовые функции
- Функция hour() считывает текущий час. Диапазон доступных значений: 0-23.
- Функция minute() считывает текущую минуту. Диапазон доступных значений: 0-59.
- Функция second() считывает текущую секунду. Диапазон доступных значений: 0-59.
- Функция day() считывает текущий день. Диапазон доступных значений: 0-31.
- Функция weekday() считывает текущий день недели. Воскресенье – это «1» и т.д.
- Функция month() считывает текущий месяц. Диапазон доступных значений: 1-12.
- Функция year() считывает текущий год. Возвращает четырехзначную цифру («2009», «2012» и т.д.)
- Функция setTime(t) выставляет системное время на время, сохраненное в переменной t. Эту функцию можно использовать в варианте setTime(hr,min,sec,day,month,yr), где шесть аргументов в скобочках – это значения, отвечающие за час, минуту, секунду, день, месяц и год.
- Функция adjustTime(adjustment) настраивает системное время при помощи добавления определенного значения.
Функции для работы с 12-часовым форматом
- Функция hourFormat() переключает библиотеку в слежение за временем в 12-часовом формате.
- Функция isAM() возвращает true, если текущее время – до полудня (AM).
- Функция isPM() возвращает true, если текущее время – после полудня (PM).
Для 32-битного типа данных «time_t»
Для времени используется специальный тип данных time_t, в котором хранится количество секунд, прошедших с 1 января 1970 года. Этот тип данных, состоящий из одного числа, упрощает хранение и сравнение данных о времени, потому что вам уже не приходится иметь дело с несколькими числами вроде количества дней в месяце, количества месяцев в году и т.д.
Работа с этими данными осуществляется через опциональный аргумент t, который указывается в функциях для считывания времени и даты. Это предотвращает ошибки в ситуациях, к примеру, когда между считыванием минуты и секунды начинается новая минута, и итоговые значения получаются некорректными. Использование опционального параметра устраняет эту проблему.
- Функция now() считывает время, прошедшее с 1 января 1970 года (в секундах).
Конструкция time_t t = now() сохраняет текущее время в переменную t.
- Функция hour(t) считывает час, сохраненный в переменной t.
- Функция minute(t) считывает минуту, сохраненную в переменной t.
- Функция second(t) считывает секунду, сохраненную в переменной t.
- Функция day(t) считывает день, сохраненный в переменной t.
- Функция weekday(t) считывает день недели, сохраненный в переменной t.
- Функция month() считывает месяц, сохраненный в переменной t.
- Функция year() считывает год, сохраненный в переменной t.
Другими словами, семь функций выше конвертируют переменную типа time_t в обычную единицу измерения времени (минуту, час, месяц и пр.). Возможно, этими функциями будет пользоваться проще, чем BreakTime() и 7-фрагментным аргументом tm (см. ниже).
- Функция makeTime(tm) конвертирует обычные дату и время в тип данных time_t. Соответственно, возвращаемое значение – тип данных time_t. Аргумент tm – переменная типа TimeElements, которая имеет следующие поля:
tm.Second Секунды 0-59
tm.Minute Минуты 0-59
tm.Hour Часы 0-23
tm.Wday Дни недели 0-6 (не нужно для mktime)
tm.Day Дни 1-31
tm.Month Месяцы 1-12
tm.Year Годы 0-99 (отсчет начинается с 1970)
- Функция breakTime(t, tm) конвертирует тип данных time_t в обычные дату и время. Аргумент tm – переменная типа TimeElements, имеющая 7 полей и рассчитывающаяся на основе аргумента t.
Строковые функции
- monthStr()
- monthShortStr()
- dayStr()
- dayShortStr()
Обратите внимание, что для этих строковых функций нужен аргумент. Он не должен быть временной меткой (к примеру, time_t), а чем-то вроде month(). То есть в итоге у вас должно получиться что-то вроде monthStr(month()) или dayStr(weekday()).
Смотрите также пример «Передача строки даты по последовательному порту».
Функции для синхронизации с другими временными сервисами
- Функция timeStatus() сообщает, было ли задано время, а также было ли оно недавно синхронизировано. Возвращает одно из следующих значений: timeNotSet (время задано не было, отсчет начат с 1 января 1970 года), timeNeedsSync (время было задано, но попытка синхронизации не удалась) и timeSet (время было задано и синхронизировано).
Если функция вернула статус timeNotSet, то значения для времени и даты будут некорректными. Если функция вернет один из двух других статусов (timeNeedsSync и timeSet), то возвращаемые значения можно использовать, но при статусе timeNeedsSync время, возможно, будет немного сдвинуто.
- Функция setSyncProvider(getTimeFunction) настраивает время, автоматически вызывая функцию getTimeFunction(). Она считывает время у стороннего сервиса и возвращает значение типа time_t или «0» (если время неизвестно).
- Функция setSyncInterval(interval) задает количество секунд между синхронизациями. Другими словами, с ее помощью настраивается, как часто вызывается функция getTimeFunction(). Аргумент interval – это, собственно, интервальный период между синхронизациями.
Также в файле «TimeLib.h», который идет в комплекте с библиотекой, есть макросы для временных констант и преобразования единиц времени.
Примеры
- TimeArduinoDue - Синхронизация времени с помощью RTC (для Arduino Due)
- TimeGPS - Синхронизация времени с помощью GPS
- TimeNTP - Синхронизация времени с помощью NTP-сервера
- TimeNTP ESP8266WiFi - Синхронизация времени с помощью NTP-сервера и WiFi
- TimeRTC - Синхронизация времени с помощью RTC (для остальных Arduino)
- TimeRTCLog - Учет изменений состояний на контактах с помощью RTC
- TimeRTCSet - Установка RTC-времени
- TimeSerial - Настройка библиотеки Time при помощи последовательного порта
- TimeSerialDateStrings - Настройка библиотеки Time при помощи последовательного порта (со строковыми сообщениями)
- TimeTeensy3 - Синхронизация времени с помощью RTC на Teensy
См.также
Внешние ссылки
Arduino продукты | |
---|---|
Начальный уровень | Arduino Uno • Arduino Leonardo • Arduino 101 • Arduino Robot • Arduino Esplora • Arduino Micro • Arduino Nano • Arduino Mini • Arduino Starter Kit • Arduino Basic Kit • MKR2UNO • TFT-дисплей Arduino |
Продвинутые функции | Arduino Mega 2560 • Arduino Zero • Arduino Due • Arduino Mega ADK • Arduino Pro • Arduino Motor Shield • Arduino USB Host Shield • Arduino Proto Shield • MKR Proto Shield • MKR Proto Large Shield • Arduino ISP • Arduino USB 2 Serial Micro • Arduino Mini USB Serial Adapter |
Интернет вещей | Arduino Yun • Arduino Ethernet • Arduino MKR1000 • Arduino WiFi 101 Shield • Arduino GSM Shield V2 • Arduino WiFi Shield • Arduino Wireless SD Shield • Arduino Wireless Proto Shield • Arduino Ethernet Shield V2 • Arduino Yun Shield • Arduino MKR1000 Bundle |
Носимые устройства | Arduino Gemma • Lilypad Arduino Simple • Lilypad Arduino Main Board • Lilypad Arduino USB • LilyPad Arduino SimpleSnap |
3D-печать | Arduino Materia 101 |
Устаревшие устройства | - |
Примеры Arduino | |
---|---|
Стандартные функции | |
Основы |
|
Цифровой сигнал |
|
Аналоговый сигнал |
|
Связь |
|
Управляющие структуры |
|
Датчики |
|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
Строки |
|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
Клавиатура |
|
Мышь |
|
Разное |