Вы можете получать время не только через переменные (для сек., мин., часов., ...), но и одной строкой, указав, что именно в ней должно быть.
Примеры:
ВЫВОД ВРЕМЕНИ В МОНИТОР
Код: Выделить всё
// ВЫВОД ВРЕМЕНИ В МОНИТОР:
#include <iarduino_RTC.h> // Подключаем библиотеку
iarduino_RTC time(RTC_DS1307); // Объявляем объект time для модуля на базе чипа DS1307
void setup() {
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
time.begin(); // Инициируем RTC модуль
}
void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время в монитор, одной строкой
delay(2); // приостанавливаем скетч на 2 мс.
}
}
УСТАНОВКА ВРЕМЕНИ МОДУЛЯ:
Код: Выделить всё
// УСТАНОВКА ВРЕМЕНИ МОДУЛЯ:
#include <iarduino_RTC.h> // Подключаем библиотеку
iarduino_RTC time(RTC_DS1307); // Объявляем объект time для модуля на базе чипа DS1307
void setup() {
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
time.begin(); // Инициируем RTC модуль
time.settime(0,51,21,27,10,15,2); // Устанавливаем время: 0 сек, 51 мин, 21 час, 27, октября, 2015 года, вторник
}
void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время в монитор, одной строкой
delay(2); // приостанавливаем скетч на 2 мс.
}
}
БУДИЛЬНИК:
Код: Выделить всё
// БУДИЛЬНИК:
#include <iarduino_RTC.h> // Подключаем библиотеку
iarduino_RTC time(RTC_DS1307); // Объявляем объект time для модуля на базе чипа DS1307
void setup() {
Serial.begin(9600); // Инициируем передачу данных в монитор последовательного порта
time.begin(); // Инициируем RTC модуль
}
void loop(){
if(millis()%1000==0){ // если прошла 1 секунда
Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время в монитор, одной строкой
if(time.Hours==7 && time.minutes==0 && time.seconds==0 && time.weekday!=0 && time.weekday!=6){
// Действия внутри оператора if, будут выполняться только по будням в 07:00
Serial.println("07:00 nopa na pa6oty"); // выводим сообщение
}
delay(2); // приостанавливаем скетч на 2 мс.
}
}
В библиотеке реализовано пять функций: три основных (begin, settime, gettime) и две дополнительных (blinktime, period).
Описание функций библиотеки:
Данная библиотека может использовать как аппаратную, так и программную реализацию шины I2C.
Подключение библиотеки:
Код: Выделить всё
#include <iarduino_RTC.h> // Подключаем библиотеку
iarduino_RTC time(RTC_DS3231); // Создаём объект time, если модуль создан на базе чипа DS3231
iarduino_RTC time(RTC_DS1307); // Создаём объект time, если модуль создан на базе чипа DS1307
iarduino_RTC time(RTC_DS1302, RST, CLK, DAT); // Создаём объект time, если модуль создан на базе чипа DS1302
Функция begin();
Назначение: инициализация RTC модуля
Синтаксис: begin();
Параметры: Нет.
Возвращаемые значения: Нет.
Примечание:
Функция вызывается 1 раз в коде setup.
Проверяет регистры модуля, запускает генератор модуля и т.д.
Пример:
Код: Выделить всё
time.begin(); // Инициируем работу с модулем реального времени
Функция settime();
Назначение: Установка времени.
Синтаксис: settime( СЕКУНДЫ [, МИНУТЫ [, ЧАСЫ [, ДЕНЬ [, МЕСЯЦ [, ГОД [, ДЕНЬ_НЕДЕЛИ ]]]]]] );
Параметры:
СЕКУНДЫ - число от 0 до 59, или -1.
МИНУТЫ - число от 0 до 59, или -1.
ЧАСЫ - число от 0 до 23, или -1.
ДЕНЬ - число от 1 до 31, или -1.
МЕСЯЦ - число от 1 до 12, или -1.
ГОД - число от 0 до 99 (без учёта века), или -1.
ДЕНЬ_НЕДЕЛИ - число от 0 (воскресение) до 6 (суббота), или -1.
Возвращаемые значения: Нет.
Примечание:
Значение параметров -1 означает, что данный параметр устанавливать ненужно.
Все параметры, кроме секунд, являются необязательными.
Пример:
Код: Выделить всё
time.settime(-1, -1, 10); // установит 10 часов, а секунды, минуты и дату, оставит без изменений.
time.settime(30, -1, -1, 2) // установит 30 секунд и 2 день месяца, остальные данные оставит без изменений
Функция gettime();
Назначение: Чтение времени.
Синтаксис: gettime( [ "СТРОКА_ШАБЛОН" ] );
Параметры:
СТРОКА_ШАБЛОН - задаёт шаблон для вывода строки времени, как у функции date() в PHP:
s - секунды от 00 до 59 (два знака)
i - минуты от 00 до 59 (два знака)
h - часы в 12-часовом формате от 01 до 12 (два знака)
H - часы в 24-часовом формате от 00 до 23 (два знака)
d - день месяца от 01 до 31 (два знака)
w - день недели от 0 до 6 (один знак: 0-воскресенье, 6-суббота)
D - день недели наименование от Mon до Sun (три знака: Mon Tue Wed Thu Fri Sat Sun)
m - месяц от 01 до 12 (два знака)
M - месяц наименование от Jan до Dec (три знака: Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec)
Y - год от 2000 до 2099 (четыре знака)
y - год от 00 до 99 (два знака)
a - полдень am или pm (два знака, в нижнем регистре)
A - полдень AM или PM (два знака, в верхнем регистре)
Возвращаемые значения: Строка шаблона, указанные символы которой заменены на время.
Примечание:
Строка не должна превышать 50 символов.
Функцию можно вызывать без параметра, это приведёт к выводу пустой строки и обновлению переменных (см. ниже).
Пример:
Код: Выделить всё
Serial.println( time.gettime("d-m-Y, H:i:s, D") ); // выведет строку "01-10-2015, 14:00:05, Thu" и обновит значение переменных.
Serial.println( time.gettime("s") ); // выведет строку "05" и обновит значение переменных.
Переменная seconds
Значение: Возвращает количество секунд, от 0 до 59;
Тип данных: uint8_t.
Переменная minutes
Значение: Возвращает количество минут, от 0 до 59;
Тип данных: uint8_t.
Переменная hours
Значение: Возвращает количество часов, от 1 до 12;
Тип данных: uint8_t.
Переменная Hours
Значение: Возвращает количество часов, от 0 до 23;
Тип данных: uint8_t.
Переменная midday
Значение: Возвращает значение 0 или 1 (0-am, 1-pm);
Тип данных: uint8_t.
Переменная day
Значение: Возвращает день месяца, от 1 до 31;
Тип данных: uint8_t.
Переменная weekday
Значение: Возвращает день недели, от 0 до 6 (0-воскресенье, 6-суббота);
Тип данных: uint8_t.
Переменная month
Значение: Возвращает текущий месяц, от 1 до 12;
Тип данных: uint8_t.
Переменная year
Значение: Возвращает текущий год, от 0 до 99;
Тип данных: uint8_t.
Код: Выделить всё
time.gettime(); // читаем время, обновляя значения всех переменных.
Serial.println( time.seconds ); // выведет число - количество секунд
Serial.println( time.minutes ); // выведет число - количество минут
Serial.println( time.hours ); // выведет число - количество часов в 12 часовом формате
Serial.println( time.Hours ); // выведет число - количество часов в 24 часовом формате
Serial.println( time.midday ); // выведет число - 0 (до полудня), или 1 (после полудня)
Serial.println( time.day ); // выведет число - текущий день месяца
Serial.println( time.weekday ); // выведет число - текущий день недели: 0 (воскресение), 1 (понедельник), ... , 5 (пятница), 6 (суббота)
Serial.println( time.month ); // выведет число - текущий месяц
Serial.println( time.year ); // выведет число - текущий год
Дополнительные функции:
Функция blinktime();
Назначение: мигание одним из параметров времени.
Указывает функции gettime(), каждую чётную секунду, заменять указанный параметр времени на пробел(ы).
Может быть полезна, для отображения устанавливаемого параметра времени на дисплее.
Синтаксис: blinktime( ПАРАМЕТР_ВРЕМЕНИ [, ЧАСТОТА_МИГАНИЯ ] );
Параметры:
ПАРАМЕТР_ВРЕМЕНИ - число от 0 до 8:
0 не мигать
1 мигают секунды
2 мигают минуты
3 мигают часы
4 мигает день
5 мигает месяц
6 мигает год
7 мигает день недели
8 мигает полдень (AM/PM)
ЧАСТОТА_МИГАНИЯ - число типа float определяющее частоту мигания в Гц (по умолчанию 1 Гц).
Возвращаемые значения: Нет.
Примечание: Значение по умолчанию 0.
Пример:
Код: Выделить всё
void setup(){
Serial.begin( 9600 ); // Инициируем передачу данных в монитор последовательного порта
time.begin(); // Инициируем работу с модулем RTC
time.blinktime( 2 ); // Заставляем функцию gettime мигать минутами с частотой по умолчанию
//time.blinktime( 2 , 5 ); // Заставляем функцию gettime мигать минутами с частотой 5 Гц (5 раз в секунду)
}
void loop(){
Serial.println( time.gettime("H:i:s") ); // будет выводить время, но минуты будут мигать
}
Функция period();
Назначение: установка минимального периода обращения к модулю в минутах.
Означает что в указанный период времени, к модулю может быть отправлен только 1 запрос на получение времени.
Ответом на все остальные запросы будет результат последнего полученного времени + время прошедшее с этого запроса.
Функция может быть полезна, если шина передачи данных сильно нагружена другими устройствами.
Синтаксис: period( ПЕРИОД );
Параметры:
ПЕРИОД - количество минут от 0 до 255, в течении которого к модулю может быть отправлен только 1 запрос. Если указан 0, значит каждый вызов функции gettime() генерирует запрос к модулю.
Возвращаемые значения: Нет.
Примечание: Значение по умолчанию 0.
Пример:
Код: Выделить всё
void setup(){
Serial.begin( 9600 ); // Инициируем передачу данных в монитор последовательного порта
time.begin(); // Инициируем работу с модулем RTC
time.period( 1 ); // Указываем обращаться к модулю RTC не чаще чем один раз в минуту
}
void loop(){
Serial.println( time.gettime("H:i:s") ); // будет выводить время как обычно, но на самом деле, обращение к модулю и сверка времени происходит 1 раз в минуту
}