Подключение DS1307 к Arduino
Да и о практичности подобных устройств забывать не стоит. На их основе можно собрать не один интересный проект. В частности, их применяют в качестве элементов для проектирования будильников, сигнализации, снятия показаний с различных датчиков (в режиме реального времени). Главная особенность именно этого RTC-модуля – работа от автономного питания (в случае, если на вашем проекте оно пропало, часы все равно будут работать и не «собьются»).
Технические параметры прибора таковы:
- напряжение питания: 5 V;
- рабочая температура: – 40℃ … + 85℃;
- память: 56 байт;
- тип интерфейса: I2C (двухпроводной);
- 24-х и 12-ти часовой режимы;
- размеры: 28мм х 25мм х 8 мм.
Подключение DS1307 к Arduino
Модуль сочетается со многими платами расширения Ардуино, на которых питание логики равно 5 В. Для реализации нашего проекта понадобится следующее «железо»:- контроллер Arduino UNO
- USB -кабель (для подключения к персональному компьютеру)
- RTC DS1307
- соединительный провод (перемычки)
Заливаем скетч для установки и проверки времени:
/*
Тестирование производилось на Arduino IDE 1.6.12
Дата тестирования 23.11.2016г.
*/
#include <Wire.h> // Подключаем библиотеку Wire
#include <TimeLib.h> // Подключаем библиотеку TimeLib
#include <DS1307RTC.h> // Подключаем библиотеку DS1307RTC
const char *monthName[12] = {
"Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};
tmElements_t tm;
void setup() {
bool parse=false;
bool config=false;
// get the date and time the compiler was run
if (getDate(__DATE__) && getTime(__TIME__)) {
parse = true;
// and configure the RTC with this info
if (RTC.write(tm)) {
config = true;
}
}
Serial.begin(9600);
while (!Serial) ; // wait for Arduino Serial Monitor
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[12];
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[monthIndex]) == 0) break;
}
if (monthIndex >= 12) return false;
tm.Day = Day;
tm.Month = monthIndex + 1;
tm.Year = CalendarYrToTm(Year);
return true;
}
Проверяем себя - открываем монитор последовательного порта (клавиши Ctrl+Shift+M). Там должно отобразиться что-то вроде текста: configured Time=16:38:47 Это означает, что вы все сделали правильно!В целом программ по работе с часами в сети очень много – можно установить время вручную либо через монитор порта, можно поработать с миганием цифр и в общем – с выводом их на экран. Все в ваших руках! Пробуйте, оценивайте, тестируйте!
Сегодня поговорим о том, как воплотить в жизнь подключение FPM10A к Arduino, что это за модуль, где используется, каковы параметры его работы и т.д. Речь идет...
Сегодня хотим рассказать вам о том, как происходит подключение DS3231 к Arduino и что это за электронное устройство. Речь идет о модуле часов реального...
Модуль энкодер KY-040 является электромеханическим устройством, а точнее - датчиком угла поворота и вращения оси различных девайсов. Непосредственно сам прибор...
В новом информационном обзоре рассматриваем GSM модуль SIM800L к Arduino. Почему выбрано именно это устройство? Во-первых, оно достаточно известно и популярно...
В этой статье мы рассмотрим подключение ADS1115 к Ардуино. Речь идет о 16-битном аналого-цифровом преобразователе, оснащенном 4 входами непосредственно для...