cart

Продуктов в корзине: 0

Поиск товаров

Новинки



Часы реального времени с возможностью определять дату и время вплоть до 2100 года - секунды, минуты, часы, день, неделю, месяц, год с учетом високосного года.

Купить сейчас

ds1302 1

Характеристики

-31 x 8 RAM для временного хранения данных

- Последовательный I/O интерфейс для минимизации разъемов
- Широкий диапазон напряжения: 2.0 - 5.5 В
- Чтение/Запись одино-байтной или много-байтной передачи
- TTL-совместимость (Vcc = 5М)
- Рабочая температура: от 0 дo +70 C0
- Кристаллический генератор: 32.768 кГц
- Оснащается батареей CR2032 на 260mAh , не заряжается(батарея в комплект не входит)
- Вес (кг): 0.0090
- Размеры: 4.5cm x 2.3cm x 1.0cm

Подключение к ардуино

DS1302 Arduino
Vcc +5В
GND GND
CLK D13(Возможно изменить в скетче)
DAT D12(Возможно изменить в скетче)
RST D10(Возможно изменить в скетче)

Програмирование

Для работы с часами вам понадобиться библиотека RTC

Пример скетча

#include <RTC.h>
RTC time;

void setup() {
delay(300);
Serial.begin(9600);
// инициализация модуля RTC
// time.begin(RTC_DS3231); // на базе чипа DS3231 модуль подключается к аппаратным выводам I2C
// time.begin(RTC_DS1307); // на базе чипа DS1307 модуль подключается к аппаратным выводам I2C
time.begin(RTC_DS1302,10,13,12); // на базе чипа DS1302, вывод RST, вывод CLK, вывод DAT доступны любые выводы

// запись даты и времени
time.settime(0,33,19,19,02,16,5); // 0 сек, 33 мин, 19 час, 19, февраля, 2016 года, четверг
// time.settime(35,10,20); // 35 сек, 10 мин, 20 час, дату оставить без изменений
// time.settime(-1,-1,-1,31,12,15); // 31, декабря, 2015 года, время и день недели оставить без изменений
}

void loop(){
   if(millis()%1000==0){ // если прошла 1 секунда
      Serial.println(time.gettime("d-m-Y, H:i:s, D")); // выводим время
     delay(1); // приостанавливаем на 1 мс, чтоб не выводить время несколько раз за 1мс
     }
}

Жмем монитор серийного порта и видим:

ds1302 2

Купить сейчас

Описание библиотеки

в библиотеке реализованы 4 функции: begin, settime, gettime и period.
Функция begin вызывается первой и предназначена для инициализации модуля, выбора шины, и выводов arduino количество и порядок вызовов функций settime, gettime и period, значения не имеет.
Инициализация модуля
time.begin(название, RST или SS, CLK, DAT) если модуль работает на шине I2C или SPI, то достаточно указать только название модуля, например: time.begin(RTC_DS3231). Если модуль работает на шине SPI, а аппаратный вывод SS занят, то номер назначенного вывода SS для модуля указывается вторым параметром, например: time.begin(RTC_DS1305,22). Если модуль работает на трехпроводной шине, то указываются номера всех выводов, например: time.begin(RTC_DS1302, 1, 2, 3); // RST, CLK, DAT
Запись даты и времени
 time.settime(сек,мин,час,д,м,г,дн) должен присутствовать хотябы 1 параметр
часы указываются в 24-часовом формате, год указывается от 0 до 99, день недели указывается числом: 1-ПН, 2-ВТ, ... 6-СБ, 0-ВС. Если предыдущий(ие) параметр(ы) надо оставить без изменений, то указывается отрицательное значение
Чтение даты и времени
time.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 символов

пример: gettime("d-m-Y, H:i:s, D"); ответит строкой "01-10-2015, 14:00:05, Thu"
пример: gettime("s"); ответит строкой "05"

Чтение даты и времени в виде цифр
time.gettime() без параметра
результат читается из переменных:
time.seconds секунды 0-59
time.minutes минуты 0-59
time.hours часы 1-12
time.Hours часы 0-23
time.midday полдень 0-1 (0-am, 1-pm)
time.day день месяца 1-31
time.weekday день недели 0-6 (1-понедельник, 6-суббота, 0-воскресенье)
time.month месяц 1-12

time.year год 0-99


Не обязательная функция
time.period(минуты) указывает минимальный период чтения времени из модуля в минутах. (от 1 до 255 минут)
Пример:
Если после вызова функции time.period(5); в течении 5 минут несколько раз была вызвана функция gettime,то запрос времени к модулю пройдёт только в первый раз, а ответом на все остальные вызовы функции gettime будет результат последнего полученного от модуля времени + время прошедшее с этого запроса, уменьшение числа запросов уменьшает время обработки запросов, разгружает шину, и уменьшает потребляемый модулем ток. При отсутствии вызова функции time.period(минуты), ответ на запрос даты и времени будет всегда читаться из модуля.

Купить сейчас

Добавить комментарий


Защитный код
Обновить

Недавно смотрели

Go to top