Помогите пожалуйста с часами DS1302 и DS1307
- Войдите на сайт для отправки комментариев
Ср, 20/01/2016 - 22:50
Здравствуйте нужна помощь с преобразованием кода для часов DS1307 на код для часов DS1302 , возможно ли это ?
#include <Wire.h> //Подключаем библиотеку для использования I2C интерфейса с модулем RTC #include <RTClib.h> //Подключаем библиотеку для использования модуля часов реального времени RTC RTC_DS1307 RTC; //Создаем переменную класса - для использования RTC //----------Объявляем разные переменные------------ const int RelayChn1 = 6; //Используем цифровой ПОРТ 6 для ПЕРВОГО канала релейного модуля const int RelayChn2 = 7; //Используем цифровой ПОРТ 7 для ВТОРОГО канала релейного модуля //----------Настройки времени и продолжительности включения реле //----------ПЕРВЫЙ канал---------------------------- const long StartRelCn_1 = 25200; //Время срабатывания в ПЕРВОМ канале релейного модуля (в секундах от начала суток) //в данном случае 25200 - это 7 часов 00 минут = ( 60секунд *60 минут *7 = 25200) const long DurationCh_1 = 10; //ДЛИТЕЛЬНОСТЬ срабатывания реле в ПЕРВОМ канале (в секундах) //----------ВТОРОЙ канал---------------------------- const long StartRelCn_2 = 37800; //Время срабатывания во ВТОРОМ канале релейного модуля (в секундах от начала суток) //В данном случае 10 часов 30 минут = (60 секунд * 60 минут * 10 часов + 60сек*30мин = 37800) const long DurationCh_2 = 15; //ДЛИТЕЛЬНОСТЬ срабатывания реле во ВТОРОМ канале (в секундах) //----------Модуль инициализации setup() - выполняется один раз при инициализации платы при подаче напряжение (и аналогичных событиях) void setup(){ pinMode(RelayChn1,OUTPUT); //Инициализируем порт для ПЕРВОГО канала как ВЫХОД pinMode(RelayChn2,OUTPUT); //Инициализируем порт для ВТОРОГО канала как ВЫХОД digitalWrite(RelayChn1,HIGH); //Устанавливаем на входах релейного модуля ВЫСОКИЙ уровень digitalWrite(RelayChn2,HIGH); //Т.к. используемый релейный модуль с опторазвязкой - управляется инверсной логикой Wire.begin(); //Инициируем I2C интерфейс RTC.begin(); //Инициирум RTC модуль // RTC.adjust(DateTime(__DATE__, __TIME__)); //С этой строки необходимо убрать комментарии один раз в начале, //для того, чтобы загрузить в RTC дату и время на момент компиляции программы //Иногда необходимо заливать СКЕТЧ на плату со снятым комментарием - для поправки //времени в RTC, НО оставлять такой СКЕТЧ в работе НЕЛЬЗЯ !!!!!!!!!!!!! } // КОНЕЦ ИНИЦИАЛИЗАЦИИ //-------------------------------------------------- void loop() // ПРОГРАММЫй безусловный ЦИКЛ { DateTime myTime = RTC.now(); //Читаем данные времени из RTC при каждом выполнении цикла //----------Раздел обработки реле по времени ---- long utime = myTime.unixtime(); //сохраняем в переменную - время в формате UNIX utime %= 86400; //Сохраняем в этой же переменной остаток деления на кол-во секнд в сутках, //Это дает количество секунд с начала текущих суток //------------КАНАЛ 1------------------------------ if ((utime >= StartRelCn_1) && (utime < (StartRelCn_1+DurationCh_1))) //Если секунд с начала суток больше, чем задано для включения //Но, одновременно и меньше, чем задано для включения + длительность { digitalWrite(RelayChn1,LOW); //Устанавливаем на ПЕРВОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает } else //во всех остальных случаях { digitalWrite(RelayChn1,HIGH); //Устанавливаем на ПЕРВОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается } //------------КАНАЛ 2 - все аналогично ----------- if ((utime >= StartRelCn_2) && (utime < (StartRelCn_2+DurationCh_2))) { digitalWrite(RelayChn2,LOW); //Устанавливаем на ВТОРОМ входе релейного модуля НИЗКИЙ уровень - реле срабатывает } else { digitalWrite(RelayChn2,HIGH); //Устанавливаем на ВТОРОМ входе релейного модуля ВЫСОКИЙ уровень - реле выключается } }//------------Конец ЦИКЛА-----------------------------
Помогите плиз
Какого рода помощь нужна? Это секретно или напишете всё же?
Нужно дописывать в библиотеку RTC код
в .h
в .cpp
Естественно код не тестил даже на компилируемость - надеюсь рабочий, накидал по быстрому по даташиту.
Обновил свою библиотеку тут https://github.com/NeiroNx/RTCLib
Ну, тогда Вы направильную ветку форума выбрали. Если Вам нужен готовый код, то Вам вот сюда. Там за денюшку напишут. Здесь не пишут готовых кодов. Здесь помогают тем, кто пишет сам.
Сам бы я никогда не купил DS1302 - ибо интегрируемость чипа слабая - интерфейс не i2c, не spi - не имеет аппаратной реализации.
NeiroN, на Всегалактическом чемпионате по советам, этот занял бы первое место с большим отрывом =)
я вот тож, по незнанию прикупил 1302 и теперь маюсь с интеграцией в готовые скетчи(у самого чёт не получается часы с бдильником сделать).
а варинт с покупкой 1307 или других, не рассматривается в силу разных причин.
нашел тут библиотеку iarduino, теперь сижу, разбираюсь.
Ну код я выложил свой - может всетки его заставим работать, раз у вас все равно есть этот DS1302.
Библиотека то клнечно хорошая, но там нет реализации "датавремя", unixtime и прочих плюшек.
да мне надо просто часы на LED(без сдвиговых регистров) и будильник, так что дата мне не нужна.
майстрячу часы-бомбу, хочу сделать будильник, что б отключать его датчиком наклона (типо потрясти и будильки отключится).
за код спасибо, бум пытаться =)
Привет! Наткнулся на вашу либу после iarduino_RTC и соблазнился на наличие необходимого мне метода unixtime(), но не смог завести сами часики (на iarduino_RTC отлично ходют). В каком состоянии поддержка этой железки? Она должна работать? Поскольку наименование пинов на платке и в вашей либе разное, поправьте, плз, если не так сопоставил мой-ваш:
RST-CE
CLK-SCK
DAT-IO
Из общих соображений как-то RST - это обычно reset, а CE - выбор устройства. Если мы вместо выбора будем давать сигнал на перезагрузку, то вряд ли устройство будет работать.