Режимы электропитания
Напряжение питания микросхемы может находиться в пределах 2,3…5,5В, имеются две линии питания, для внешнего источника (линия Vcc), а также для батареи (Vbat). Напряжение внешнего источника постоянно отслеживается, при падении ниже порога Vpf=2,5В, происходит переключение на линию батареи. В следующей таблице представлены условия переключения между линиями питания:
Комбинации уровней напряжения | Активная линия питания |
Vcc < Vpf, Vcc < Vbat | Vbat |
Vcc < Vpf, Vcc > Vbat | Vcc |
Vcc > Vpf, Vcc < Vbat | Vcc |
Vcc > Vpf, Vcc > Vbat | Vcc |
Точность хода часов поддерживается за счет отслеживания температуры окружающей среды. В микросхеме запускается внутренняя процедура корректировки частоты тактового генератора, величина корректировки определяется по специальному графику зависимости частоты от температуры. Процедура запускается после подачи питания, а затем выполняется каждые 64 секунды.
В целях сохранения заряда, при подключении батареи (подача напряжения на линию Vbat), тактовый генератор не запускается до тех пор, пока напряжение на линии Vcc не превысит пороговое значение Vpf, или не будет передан корректный адрес микросхемы по интерфейсу I2C. Время запуска тактового генератора составляет менее одной секунды. Примерно через 2 секунды после подачи питания (Vcc), или получения адреса по интерфейсу I2C, запускается процедура коррекции частоты. После того как тактовый генератор запустился, он продолжает функционировать до тех пор, пока присутствует напряжение Vcc или Vbat. При первом включении регистры даты и времени сброшены, и имеют следующие значения 01/01/ 00 – 01 – 00/00/00 (день/месяц/год/ – день недели – час/минуты/секунды).
Ток потребления при питании от батареи напряжением 3,63В, составляет 3 мкА, при отсутствии передачи данных по интерфейсу I2C. Максимальный ток потребления может достигать 300 мкА, в случае использования внешнего источника питания напряжением 5,5В, и высокой скорости передачи данных I2C.
Кухонный таймер Ардуино с энкодером
Сейчас рассмотрим, как сделать таймер на Ардуино своими руками с энкодером и LCD. Принцип управления, подобен предыдущему варианту. Поворотом ручки энкодера можно задать необходимый временной интервал, а нажатием на ручку можно запускать и останавливать обратный отсчет времени. Далее размещена схема сборки проекта на Arduino Nano, этот проект можно собрать и на плате Arduino Uno.
Скетч таймера обратного отсчета времени
#include <Wire.h> // библиотека для протокола I2C #include <LiquidCrystal_I2C.h> // библиотека для LCD 1602 LiquidCrystal_I2C LCD(0x27, 20, 2); // присваиваем имя дисплею #include <RotaryEncoder.h> // библиотека для энкодера RotaryEncoder encoder(4, 2); // пины подключение энкодера (DT, CLK) // задаем шаг энкодера, максимальное и минимальное значение #define STEPS 1 #define POSMIN 0 #define POSMAX 30 int lastPos, newPos; boolean buttonWasUp = true; byte w = 0; int SEC = 0; int MIN = 0; unsigned long timer; void setup() { pinMode(6, INPUT_PULLUP); // пин для кнопки энкодера encoder.setPosition(0 / STEPS); pinMode(10, OUTPUT); // подключаем светодиод и зуммер pinMode(12, OUTPUT); digitalWrite(10, HIGH); LCD.init(); // инициализация дисплея LCD.backlight(); // включение подсветки LCD.setCursor(2, 0); LCD.print("TIMER STOP"); LCD.setCursor(5, 1); LCD.print(MIN); LCD.print(" : "); LCD.print(SEC); } void loop() { // проверяем положение ручки энкодера encoder.tick(); newPos = encoder.getPosition() * STEPS; if (newPos < POSMIN) { encoder.setPosition(POSMIN / STEPS); newPos = POSMIN; } else if (newPos > POSMAX) { encoder.setPosition(POSMAX / STEPS); newPos = POSMAX; } // если положение изменилось - меняем переменную MIN и выводим на дисплей if (lastPos != newPos) { MIN = newPos; lastPos = newPos; LCD.clear(); LCD.setCursor(2, 0); LCD.print("TIMER STOP"); LCD.setCursor(5, 1); LCD.print(MIN); LCD.print(" : "); LCD.print(SEC); } // если была нажата кнопка энкодера запускаем отсчет времени boolean buttonIsUp = digitalRead(6); if (buttonWasUp && !buttonIsUp && MIN > 0) { delay(10); buttonIsUp = digitalRead(6); if (!buttonIsUp) { if (SEC == 0) { SEC = 60; MIN = MIN - 1; } if (MIN < 0 ) { MIN = 0; } digitalWrite(10, LOW); w = 1; } } buttonWasUp = buttonIsUp; // запоминаем состояние кнопки while (w == 1 ) { // если прошло 995 мс - вычитаем одну секунду от переменной SEC if (millis() - timer > 993) { timer = millis(); SEC = SEC - 1; // если отсчет закончился - обнуляемся, включаем сигнал и выходим из цикла if (SEC == 0 && MIN == 0) { lastPos = 0; newPos = 0; MIN = 0; SEC = 0; LCD.clear(); LCD.setCursor(2, 0); LCD.print("TIMER STOP"); LCD.setCursor(5, 1); LCD.print(MIN); LCD.print(" : "); LCD.print(SEC); digitalWrite(10, HIGH); tone(12, 100); delay(500); noTone(12); w = 0; } // если секунды дошли до нуля - вычитаем одну минуту if (SEC == 0 && w==1) { SEC = 59; MIN = MIN - 1; if (MIN < 0 ) { MIN = 0; } } // если из цикла while еще не вышли - выводим информацию на дисплей if (w == 1) { LCD.clear(); LCD.setCursor(2, 0); LCD.print("TIMER START"); LCD.setCursor(5, 1); LCD.print(MIN); LCD.print(" : "); LCD.print(SEC); } } // если была нажата кнопка - обнуляем переменные и выходим из цикла buttonIsUp = digitalRead(6); if (buttonWasUp && !buttonIsUp) { delay(10); buttonIsUp = digitalRead(6); if (!buttonIsUp) { lastPos = 0; newPos = 0; MIN = 0; SEC = 0; LCD.clear(); LCD.setCursor(2, 0); LCD.print("TIMER STOP"); LCD.setCursor(5, 1); LCD.print(MIN); LCD.print(" : "); LCD.print(SEC); digitalWrite(10, HIGH); w = 0; } } buttonWasUp = buttonIsUp; // запоминаем состояние кнопки } }
Пояснения к коду:
- частоту звукового сигнала можно изменить через команду tone();
- для скетча потребуется установить библиотеку RotaryEncoder.
Способ 2: чтение датчика DS18B20 по адресу
Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.
Поиск адресов датчиков DS18B20s на шине
Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.
Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.
Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:
Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине
Скопируйте все адреса, так как они нам понадобятся в следующем скетче.
Чтение показаний датчиков DS18B20 по адресу
Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.
Вывод вышеприведенного эскиза выглядит так
Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса
Объяснение кода
Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки .
Далее мы вводим адреса, которые были найдены ранее для каждого датчика температуры. В нашем случае имеем следующее.
Во фрагменте настройки мы инициализируем библиотеку путем вызова функции и инициализируем последовательную связь с ПК.
В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию .
Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию , для которой передается в качестве параметра.
Вышеприведенная функция просто вызывает библиотечные функции для отображения температуры в градусах Цельсия и для отображения температуры в градусах Фаренгейта.
Библиотека Arduino для работы с DS1307
DS1307 легко подключается к любому микроконтроллеру с питанием логики 5 В и возможностью I2C подключения. Мы рассмотрим подключение и использование этого модуля с Arduino .
Будем использовать библиотеку RTClib для получения и настройки показаний с DS1307. Если у вас есть вопросы по учтановке дополнительных библиотек Arduino — ознакомьтесь с этой инструкцией .
В статье рассмотрен пример часов реального времени от Adafruit, но вы можете с тем же успехом использовать китайские аналоги. Принцип работы и подключения не отличается.
- КУПИТЬ Arduino Uno R3 ;
- КУПИТЬ Breadboard ;
- КУПИТЬ модуль часов реального времени DS1307 ;
На часах реального премени 5 пинов: 5V, GND, SCL, SDA и SQW.
- 5V используется для питания чипа модуля часов реального времени, когда вы делаете к нему запрос для получения данных о времени. Если сигнал 5 В не поступает, чип переходит в «спящий» режим.
- GND — общая земля. Обязательно подключается в схему.
- SCL — контакт i2c часов — необходим для обмена данными с часами реального времени.
- SDA — контакт, по которому через i2c передаются данные с часов реального времени.
- SQW дает возможность настроить вывод данных в виде square-wave. В большинстве случаев этот контакт не используется.
Если вы настроили аналоговый пин 3 (цифровой 17) в режим OUTPUT и HIGH, а аналоговый пин 2 (цифровой 16) в режим OUTPUT и LOW, вы можете запитывать часы реального времени непосредственно от этих контактов!
Подключите аналоговый пин 4 на Arduino к SDA. Аналоговый пин 5 на Arduino подключите к SCL.
Работа программного обеспечения
Интерфейс DS5000
Программа, приведённая в Приложении, написана для взаимодействия DS5000 с DS1307 с помощью двухпроводного интерфейса. DS5000 запрограммирован с использованием макетной платы DS5000T фирмы Dallas Semiconductor, которая позволяет использовать ПК в качестве терминала ввода/вывода. Программные средства KIT5K поставляемые вместе с макетной платой DS5000T обеспечивают высокоуровневый интерфейс для загрузки программных приложений в DS5000 или установки его параметров через Program command. Программное обеспечение KIT5K содержит эмулятор терминала ввода/вывода, чтобы позволить пользователю запускать программные приложения в микроконтроллер DS5000, который связан с пользователем через COM порт ПК.
Исходный код DS1307
Первый раздел исходного кода, расположенный в Приложении, используется при конфигурации DS5000 для последовательного соединения с ПК. Также в начале кода находится подпрограмма MASTER_CONTROLLER, которая используется для управления демонстрационной программой.
Подпрограммы, которые следуют непосредственно за подпрограммой MASTER_CONTROLLER, являются драйверами низкого уровня и служат для управления двухпроводным интерфейсом. Они не являются индивидуальными для DS1307, а могут быть использованы с любым совместимым с двухпроводным интерфейсом «ведомым» устройством. Вот эти подпрограммы:
SEND_START
Подпрограмма используется для генерации состояния START на двухпроводной шине.
SEND_STOP
Подпрограмма используется для генерации состояния STOP на двухпроводной шине.
SEND_BYTE
Подпрограмма посылает 8-разрядное слово (первым является старший значащий бит (MSB)) по двухпроводной шине и девятый тактовый импульс для импульса подтверждения приёма.
READ_BYTE
Подпрограмма читает 8-разрядное слово с двухпроводной шины. Она проверяет очищен ли флаг LASTREAD после того, как считан последний байт из «ведомого» устройства. Если это был не последний байт, то DS5000 посылает импульс подтверждения по девятому тактовому импульсу, а если это был последний считанный байт из «ведомого» устройства, то DS5000 посылает «неподтверждение».
SCL_HIGH
Подпрограмма осуществляет переход линии SCL из низкого в высокое состояние и обеспечивает высокое состояние линии SCL перед продолжением.
DELAY и DELAY_4
Эти две подпрограммы включены для обеспечения сохранения временной диаграммы двухпроводной шины.
Остальная часть кода, включённая в приложение, специально предназначена для демонстрации функций DS1307. Продемонстрированы следующие функции:
Setting Time
Время считывается с клавиатуры и сохраняется в сверхоперативной памяти DS5000. Затем оно передаётся по двухпроводной шине в DS1307.
Set RAM
Одиночный байт в шестнадцатеричном виде считывается с клавиатуры и записывается в RAM DS1307.
Read Date/Time
Дата и время считываются по двухпроводной шине и сохраняются в сверхоперативной памяти DS5000. Затем они выводятся на экран. Это продолжается до тех пор, пока не будет нажата кнопка на клавиатуре.
OSC On/OSC Off
Тактовый генератор DS1307 может быть включен или выключен.
SQW/OUT On/SQW/OUT Off
Функция SQW/OUT может быть включена или выключена. Она будет переключаться на частоте 1 Гц.
Таблица 1. AC электрические характеристики
Параметр | Символ | Эффективноезначение | Единицы |
Тактовая частота SCL | fSCL | 59 | кГц |
Время свободного состояния шины между состояниями STOP и START | tBUF | 5.7 | мкс |
Время удержания(повторенного) состояния START | tHD:STA | 6.2 | мкс |
Период низкого состояния тактового импульса SCL | tLOW | 10.5 | мкс |
Период высокого состояния тактового импульса SCL | tHIGH | 6.5 | мкс |
Время установки для повторного состояния START | tSU:STA | 5.3 | мкс |
Время удержания данных | tHD:DAT | 5.5 | мкс |
Время установки данных | tSU:DAT | 3.1 | мкс |
Время установки для состояния STOP | tSU:STO | 5.4 | мкс |
Заключение
Было показано, как правильно подсоединять напрямую DS1307 или любое двухпроводное «ведомое» устройство к 8051-совместимому микроконтроллеру. Соединение должно быть таким, чтобы временная диаграмма двухпроводного интерфейса на микроконтроллере не нарушалась драйверами низкого уровня. Для этого в программный код должны быть включены подпрограммы задержки. Приведённых в таблице 1 эффективных значений, придерживались при конфигурации аппаратной части, описанной в данном техническом руководстве.
Документация
Rus Пример программы на языке Асемблер | ||
100 Kb Engl Исходный фаил | ||
Rus Описание интерфейса I2C | ||
Програмное обеспечение микроконтроллеров MCS-51 | ||
200 Kb Engl Описание DS1307 — часы реального времени с IIC интерфейсом |
Главная —
Микросхемы —
DOC —
ЖКИ —
Источники питания —
Электромеханика —
Интерфейсы —
Программы —
Применения —
Статьи
Заказ изготовления печатной платы
После окончания работы по проектированию печатной платы вы можете заказать ее изготовление на сайте JLCPCB.com. Для осуществления этого вам будет необходим Gerber файл печатной платы, для этого можно в редакторе EasyEDA нажать кнопку Fabrication Output (заказа изготовления) и затем подгрузить этот файл на странице заказа печатной платы.
При заказе печатной платы на сайте JLCPCB.com необходимо нажать на кнопку Quote Now или Buy Now, выбрать количество экземпляров печатной платы, число слоев меди, толщину печатной платы, вес меди и даже цвет печатной платы как показано на рисунке.
После выбора всех необходимых опций печатной платы необходимо нажать кнопку “Save to Cart” и тогда вас перебросит на страницу, где вы можете загрузить Gerber файл, который мы скачали с EasyEDA. Загрузите ваш Gerber файл и нажмите на “Save to Cart”. В завершение нажмите Checkout Securely чтобы завершить оформление заказа. В нашем случае стоимость изготовления печатной платы составила $2, сделали ее за 48 часов и доставили службой доставки DHL за 5 дней.
В результате печатная плата к нам пришла вот в такой вот коробке:
Внутри нее была наша печатная плата, к которой мы припаяли необходимые компоненты, потом загрузили программу в плату Arduino и, таким образом, завершили изготовление проекта.
Установка времени
Для установки времени воспользуемся другим примером из этой же библиотеки.
Откроем пример Файл → Образцы → DS1307RTC → SetTime и загрузим его в Arduino.
Отобразить/скрыть пример кода SetTime
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
const char *monthName = {
«Jan», «Feb», «Mar», «Apr», «May», «Jun»,
«Jul», «Aug», «Sep», «Oct», «Nov», «Dec»
};
tmElements_t tm;
void setup()
{
bool parse=false;
bool config=false;
// получаем дату и время на момент компиляции
if (getDate(__DATE__) && getTime(__TIME__))
{
parse = true;
// и конфигурируем RTC используя эту информацию
if (RTC.write(tm))
{
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // ожидаем ответа порта
delay(200);
if (parse && config)
{
Serial.print(«DS1307 configured Time=»);
Serial.print(__TIME__);
Serial.print(«, Date=»);
Serial.println(__DATE__);
}
else if (parse)
{
Serial.println(«DS1307 Communication Error :-{«);
Serial.println(«Please check your circuitry»);
}
else
{
Serial.print(«Could not parse info from the compiler, Time=\»»);
Serial.print(__TIME__);
Serial.print(«\», Date=\»»);
Serial.print(__DATE__);
Serial.println(«\»»);
}
}
void loop()
{
}
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, «%d:%d:%d», &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
bool getDate(const char *str)
{
char Month;
int Day, Year;
uint8_t monthIndex;
if (sscanf(str, «%s %d %d», Month, &Day, &Year) != 3) return false;
for (monthIndex = 0; monthIndex < 12; monthIndex++)
{
if (strcmp(Month, monthName) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
#include <Wire.h> constchar*monthName12={ «Jan»,»Feb»,»Mar»,»Apr»,»May»,»Jun», «Jul»,»Aug»,»Sep»,»Oct»,»Nov»,»Dec» }; tmElements_ttm; voidsetup() { boolparse=false; boolconfig=false; // получаем дату и время на момент компиляции if(getDate(__DATE__)&&getTime(__TIME__)) { parse=true; // и конфигурируем RTC используя эту информацию if(RTC.write(tm)) { config=true; } } Serial.begin(9600); while(!Serial);// ожидаем ответа порта delay(200); if(parse&&config) { Serial.print(«DS1307 configured Time=»); Serial.print(__TIME__); Serial.print(«, Date=»); Serial.println(__DATE__); } elseif(parse) { Serial.println(«DS1307 Communication Error :-{«); Serial.println(«Please check your circuitry»); } else { Serial.print(«Could not parse info from the compiler, Time=\»»); Serial.print(__TIME__); Serial.print(«\», Date=\»»); Serial.print(__DATE__); Serial.println(«\»»); } } voidloop() { boolgetTime(constchar*str) { intHour,Min,Sec; if(sscanf(str,»%d:%d:%d»,&Hour,&Min,&Sec)!=3)returnfalse; tm.Hour=Hour; tm.Minute=Min; tm.Second=Sec; returntrue; } boolgetDate(constchar*str) { charMonth12; intDay,Year; uint8_tmonthIndex; if(sscanf(str,»%s %d %d»,Month,&Day,&Year)!=3)returnfalse; for(monthIndex=;monthIndex<12;monthIndex++) { if(strcmp(Month,monthNamemonthIndex)==)break; } if(monthIndex>=12)returnfalse; tm.Day=Day; tm.Month=monthIndex+1; tm.Year=CalendarYrToTm(Year); returntrue; } |
Открыв монитор порта, видим, что время теперь установлено правильно
Вновь вернемся к примеру ReadTest, скомпилируем его, загрузим в микроконтроллер и посмотрим на результат.
Теперь мы видим, что время актуально и часы тикают.
Общие сведения
Использовании модуля DS1307 зачастую очень оправдано, например, когда данные считываются редко, интервалом более недели, использовать собственные ресурсы контроллера, неоправданно или невозможно. Обеспечивание бесперебойное питание, например платы Arduino, на длительный срок дорого, даже при использовании батареи.
Благодаря собственной памяти и автономностью, можно регистрировать события, (при автономном питании) например изменение температуры и так далее, данные сохраняются в памяти их можно считать из памяти модуля. Так что модуль DS1307 часто используют, когда контроллерам Arduino необходимо знать точное время, для запуска какого то события и так далее.
Обмен данными с другими устройствами осуществляется по интерфейсу I2C с выводов SCL и SDA. Конденсаторы С1 и С2 необходимы для снижения помех по линию питания. Чтобы обеспечить надлежащего уровня сигналов SCL и SDA установлены резисторы R2 и R3 (подтянуты к питанию). Для проверки работоспособности модуля, на вывод 7 микросхему DS1307Z, подается сигнал SQ, прямоугольной формы с частотой 1 Гц. Элементы R4, R5, R6, VD1 необходимы для подзарядку литиевой батарейки. Так же, на плате предусмотрено посадочное место (U1), для установки датчика температуры DS18B20 (при необходимости можно впаять его), считывать показания, можно с вывода DS, который подтянут к пиатнию, через резистор R1 сопротивлением 3.3 кОм. Принципиальную схему и назначение контактов можно посмотреть на рисунках ниже.
На плате расположено две группы контактов, шагом 2.54 мм, для удобного подключения к макетной плате, буду использовать штырьевые разъемы, их необходимо впаять.
Первая группа контактов:► DS: вывод DS18B20 (1-wire)► SCL: линия тактирования (Serial CLock)► SDA: линия данных (Serial Dфta)► VCC: «+» питание модуля► GND: «-» питание модуля
Вторая группа контактов:► SQ: вход 1 МГц► DS: вывод DS18B20 (1-wire)► SCL: линия тактирования (Serial CLock)► SDA: линия данных (Serial Dфta)► VCC: «+» питание модуля► GND:«-» питание модуля► BAT:
Подзарядка батареи
Как описывал ваше модуль может заряжать батарею, реализовано это, с помощью компонентов R4, R5, R6 и диода D1. Но, данная схема имеет недостаток, через резистор R4 и R6 происходит разряд батареи (как подметил пользователь ALEXEY, совсем не большой). Так как модуль потребляем незначительный ток, можно удалить цепь питания, для этого убираем R4, R5, R6 и VD1, вместо R6 поставим перемычку (после удаления компонентов, можно использовать обычную батарейку CR2032).
Модуль ZS-042 на базе RTC DS3231N
Представляют из себя законченный модуль ZS-042, который можно подключать к различным устройствам, не только к платформе Arduino.
Модуль построен на микросхеме DS3231SN, которая по сути и является часами реального времени. В отличии от старой модели часов, например на микросхеме DS1307, эти часы содержат внутренний кварцевый резонатор, благодаря чему часы имеют точный ход.
Расположение и назначение пинов на модуле ZS-042
Вывод | Описание |
---|---|
32К | Выход, частота 32 кГц |
SQW | Программируемый выход Square-Wave сигнала |
SCL | Линия тактирования (Serial CLock) |
SDA | Линия данных (Serial Data) |
VCC | Питание модуля |
GND | Земля |
Описание ATMEL AT24C32N
AT24C32N — это EEPROM память на 32к от производителя Atmel, собранная в корпусе SOIC8, работающая по двухпроводной шине I2C. Адрес микросхемы 0x57, при необходимости легко меняется, с помощью перемычек A0, A1 и A2 (это позволяет увеличить количество подключенных микросхем AT24C32/64). Так как чип AT24C32N имеет, три адресных входа (A0, A1 и A2), которые могут находится в двух состояния, либо лог «1» или лог «0», микросхеме доступны восемь адресов. от 0x50 до 0x57.
Библиотека RTC.h Arduino: описание команд
Для работы с модулями часов Ардуино, в библиотеке реализовано 5 функций:
// запуск модуля
// указать время
— год указывается без учета века, в формате 0-99
— часы указываются в 24-часовом формате, от 0 до 23
— день недели указывается в виде числа от 0-воскресенье, 6-суббота
// получить время
— gettime(«d-m-Y, H:i:s, D»); ответит строкой «12-06-2020, 18:30:05, Fri»
— gettime(«H»); ответит строкой «18»
функцией gettime можно получать различную информацию:
- s — секунды от 00 до 59 (два знака)
- i — минуты от 00 до 59 (два знака)
- h — часы в 12-часовом формате от 01 до 12 (два знака)
- H — часы в 24-часовом формате от 00 до 23 (два знака)
- d — день месяца от 01 до 31 (два знака)
- D — день недели наименование от Mon до Sun (три знака)
- m — месяц от 01 до 12 (два знака)
- M — месяц наименование от Jan до Dec (три знака)
- Y — год от 2000 до 2099 (четыре знака)
- y — год от 00 до 99 (два знака)
— указывает функции gettime мигать одним из параметров времени
— устанавливает период обращения к модулю в минутах (от 0 до 255)