Официальный сайт компании Arduino по адресу arduino.cc
Как правильно обрабатывать в программе переход через ПОЛНОЧЬ
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Столкнулся с проблемой: как сказать ардуине что между 23ч и 02ч, разница 3 часа, а не 21 час?
В целом задача такая: есть список настроек которые должны активироваться в определенное время. Нужно выбрать ту настройку которая соответствует текущему времени.
Настройки храняться в массиве ввиде значений времени (пока планировалось ввиде кол-ва секунд с полуночи).
Проблема начинается когда мы сравниваем время срабатывания настройки с текущим.
К примеру, есть всего 2 набора настроек, один активируеся в 23-00, другой в 07-00.
Допустим ардуина потеряла питание и включилась в 03-00.
Значит должен активироваться набор настроек для 23-00, ведь мы понимаем что сутки движутся неприрывно и полночь 00часов, больше чем 23часа но меньше чем 07-00.
Вопрос: Как объяснить это Ардуине?
Каким должен быть единый алгоритм определения для случаев 23ч и 07ч и к примеру 15ч и 16ч ?
Алгоритм этот называется календарем.
Ну календарь есть встроенный в RTC-tiny, только не понимаю как это применить.
Время выводится как:
Как здесь увязать календарь?
Переводить "обычное" время в unixtime
Спасибо, Можно и так на ближайшие годы должно хватить 4х байт Long
Как следствие возник вопрос: а есть ли библиотека для перевода даты\времени в unixtime и обратно?
Перевод в unixtime есть в RTClib
Да, пробовал её использовать но она не компилится (примеры компилятся, а в составе программы нет) - жалуется на ошибки в RTClib.h
если лень разбираться, почему возникают ошибки, можно из нее к себе нужный код выдрать
Если кому-то нужно, вот код выдающий unixtimestamp, Предполагается наличие RTC выдающего часы минусы секунды, число, месяц, год.
Но проблему свою я так и не решил((
Дело в том что юникстайм помогает, если я учитываю в настройках дату, т.е. 23:00 03.02.2014 и 07:00 04.02.2014 - тогда по юникс тайму можно понять что произошел переход через 00 часов и 07-00 - это больше, чем 23-00.
НО мне нужно установить СУТОЧНЫЙ таймер, т.е. чтобы можно было задать настройку к примеру на 23-00 и 07-00 НЕ ЗАВИСИМО ОТ ДАТЫ!
И я что-то никак не соображу как это сделать?!
Придумал таки алгоритм как обойтись без Unix timestamp и правильно обрабатывать суточный таймер, без учета даты вообще.) Если надо, выложу код). Всем спасибо)