Таймер с часами реального времени.

Как собрать и запрограммировать робота на Arduino(Freeduino, Roboduino, Seeduino ...). Используем Wiring и Processing.

Таймер с часами реального времени.

Сообщение paradox860 » 15 июн 2011, 17:37

Здравствуте ВСЕ!Собираю на Дуине аква комьютер.Столкнулся с такой проблемой - нужно в определенное время включать нагрузку и в определенное выключать(допустим свет в аквариуме включить в 9:00 а выключить в 21:00).К ардуине подключенны часы на DS1307 и дисплей.
Вопрос такой как выполнить сравнение времени на которое установлен таймер и времени на данный момент?
Zonestar 802N (NA)
paradox860
 
Сообщения: 17
Зарегистрирован: 15 июн 2011, 17:34
Откуда: Пятигорск

Re: Таймер с часами реального времени.

Сообщение Angel71 » 15 июн 2011, 18:02

время2-время1=разница :oops: :crazy: :) с утра так было
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Таймер с часами реального времени.

Сообщение =DeaD= » 15 июн 2011, 19:02

Если время включает полную дату - тогда так :) иначе при переходе через сутки будет полная фигня :pardon:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Таймер с часами реального времени.

Сообщение Scorpio » 15 июн 2011, 19:43

Там все в отдельных регистрах. Сравнить сначала десятки часов, если совпадают то единицы часов, десятки минут и единицы минут. Только они там в двоично - десятичном коде. Так что прийдется переводить, если задание срабатывания будет в дркгом.
Аватара пользователя
Scorpio
 
Сообщения: 2681
Зарегистрирован: 30 сен 2008, 18:49
Откуда: Где-то в Латинской Америке

Re: Таймер с часами реального времени.

Сообщение Angel71 » 15 июн 2011, 20:35

за квант времени берём, допустим секунды и храним в секундах. за 0 принимаем 0ч 0мин 0сек 1января такого-то года. :) как хотите отнимайте, складывайте, из секунд получайте часы, минуты, дни, недели. и всё, никакой путаницы. если нормально хранить и учитывать базовый год и что в данный момент представляет из себя это кол-во секунд (дата-время или интервал времени), то проблем почти не будет. :oops: чтоб вообще не было, нужно учитывать ещё високосные года, но эт не сложно.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Таймер с часами реального времени.

Сообщение HarryStar » 15 июн 2011, 21:08

Если нужна разница то да - лучше 1 раз написать функцию перевода времени в секунды и обратно и вычислять разницу в секундах.

Но ТС не нужно измерять разницу во времени. Ему нужно просто сделать что-то типа будильника. Сделать список событий и функцию добавления события в будильник в формате "событие, время", например
budilnik(LIGHT_ON, "21:00");
budilnik(LIGHT_OFF, "07:00");

и все. А МК будет пару раз в минуту проверять не наступило ли данное время, сравнивая указанное значение с тем, что будет прочитано из часов.
PS: Завтра как раз заберу заказик, где такие же часы с I2C, буду тоже их мучить.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Таймер с часами реального времени.

Сообщение paradox860 » 15 июн 2011, 21:15

Scorpio писал(а):Там все в отдельных регистрах. Сравнить сначала десятки часов, если совпадают то единицы часов, десятки минут и единицы минут. Только они там в двоично - десятичном коде. Так что прийдется переводить, если задание срабатывания будет в дркгом.

Я так и делал, просто уж больно громоздко получается много ифов.У меня время уже переведенное хранится в массиве - часы минуты секунды отдельно.Я думал можно как то проще сделать.
Zonestar 802N (NA)
paradox860
 
Сообщения: 17
Зарегистрирован: 15 июн 2011, 17:34
Откуда: Пятигорск

Re: Таймер с часами реального времени.

Сообщение =DeaD= » 15 июн 2011, 21:19

Сделать отдельно функцию возращающую по отдельным компонентам даты и времени одно число - время в секундах с какой-то даты.
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Таймер с часами реального времени.

Сообщение paradox860 » 15 июн 2011, 21:23

HarryStar писал(а):Если нужна разница то да - лучше 1 раз написать функцию перевода времени в секунды и обратно и вычислять разницу в секундах.

Но ТС не нужно измерять разницу во времени. Ему нужно просто сделать что-то типа будильника. Сделать список событий и функцию добавления события в будильник в формате "событие, время", например
budilnik(LIGHT_ON, "21:00");
budilnik(LIGHT_OFF, "07:00");

и все. А МК будет пару раз в минуту проверять не наступило ли данное время, сравнивая указанное значение с тем, что будет прочитано из часов.
PS: Завтра как раз заберу заказик, где такие же часы с I2C, буду тоже их мучить.

Разница не нужна. Тут впринципе нужно вот такое условие которое нужно проверять раз в секунду if 9:00<x<21:00 только как это проще реализовать?

Добавлено спустя 1 минуту 48 секунд:
=DeaD= писал(а):Сделать отдельно функцию возращающую по отдельным компонентам даты и времени одно число - время в секундах с какой-то даты.

Да наверное завтра так и попробую.
Zonestar 802N (NA)
paradox860
 
Сообщения: 17
Зарегистрирован: 15 июн 2011, 17:34
Откуда: Пятигорск

Re: Таймер с часами реального времени.

Сообщение dccharacter » 15 июн 2011, 21:23

Можно создать две переменные типа структура и сравнивать их.
Мой волшебник это я сам. Всю архитектуру программы придумал лично, а ребята помогли воплотить её. Я бы и сам мог написать, но лень учить язык и его конструкции.
Аватара пользователя
dccharacter
 
Сообщения: 4995
Зарегистрирован: 10 дек 2010, 13:16
Откуда: Красногорск МО
прог. языки: C, Python, wiring/processing
ФИО: Андрей

Re: Таймер с часами реального времени.

Сообщение =DeaD= » 15 июн 2011, 21:24

dccharacter писал(а):Можно создать две переменные типа структура и сравнивать их.

Можно по какой-то причине пропустить момент совпадения и тогда всё, пиши пропало :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: Таймер с часами реального времени.

Сообщение HarryStar » 15 июн 2011, 21:27

Вам не надо сравнивать больше или меньше. Вам нужно просто равенство. Это гораздо проще, тут надо сравнивать только часы и минуты и все. 2 IFа (и 1-2 строки конвертации из 16-10 формата). Наступило событие - выполняем его и выкидываем из очереди событий. Все. Никаких больше меньше.

Пропустить невозможно, т.к. проверка идет несколько раз в минуту.
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Таймер с часами реального времени.

Сообщение Angel71 » 15 июн 2011, 21:32

2HarryStar, это общепринятый подход. всё остальное упрощение, оптимизация или просто изврат. :wink: в случае с аквакомпьютером это имхо изврат.
П.С. в смысле изврат вообще. всё начнается вот с таких простеньких проблем, когда нужно писать "велосипед". заканчивается тем, что в общем такой аквакомпьютер выйдет "слегка" примитивный простенький, а делать его будут сипец как долго. +есть проекты аквакомпьютеров (на соответствующих форумах) - можно скачать схему, прошивку и просто начать использовать. а заново велосипед изобретать, причём не дотягивающий или такого же уровня смысла мало.
Последний раз редактировалось Angel71 15 июн 2011, 21:49, всего редактировалось 1 раз.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

Re: Таймер с часами реального времени.

Сообщение paradox860 » 15 июн 2011, 21:46

Angel71 писал(а):2HarryStar, это общепринятый подход. всё остальное упрощение, оптимизация или просто изврат. :wink: в случае с аквакомпьютером это имхо изврат.
П.С. в смысле изврат вообще. всё начнается вот с таких простеньких проблем, когда нужно писать "велосипед". заканчивается тем, что в общем такой аквакомпьютер выйдет "слегка" примитивный простенький, а делать его будут сипец как долго.

Да я уже и так нагородил.Хотел сначала просто таймер включения выключения сделать.А получилось несколько таймеров для включения 4 нагрузок в разное время,Термостабилизатор с подключенным охдадителем и нагревателем, и ко всему этому прикрутил дисплей с неким подобием меню.А да и еще все необходимые значения сохраняются в ПЗУ.
Zonestar 802N (NA)
paradox860
 
Сообщения: 17
Зарегистрирован: 15 июн 2011, 17:34
Откуда: Пятигорск

Re: Таймер с часами реального времени.

Сообщение Angel71 » 15 июн 2011, 21:56

ээээээээ, а чего только с таймеров? :oops: вы инет до этого на тему аквакомпьютеров вообще шерстили? на всевозможных аквафорумах проекты неоднократно попадались и таки весьма функциональные железки в итоге получались у людей. :oops: но имхо всё-равно простенькие. :) как по мне намного функциональней и не сильно дороже подобная автоматика получается на платах, начиная с уровня mini2440. нормальный экран (в сравнении с символьным), тач, много памяти, возможность писать код в среде с более богатыми готовыми библиотеками + еще много всяких плюшек.
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18

След.

Вернуться в Arduino и другие Xduino

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11