Но если, после сброса или сбоя, я вхожу в программу. А событие уже наступило десять минут назад. А при таком входе как флаг поднимать, раз оно уже прошло? Как расчитать значения ШИМ? При входе в программу millis() равно нолю, а флаг надбыло поднимать " - 600000 миллисекунд назад".
куда ты входишь после сбоя - ты умер, твоё место на кладбище, лежи и не рыпайся.
следующая копия тебя не будет скорбеть, что ты не успел трахнуть соседку потому, что умер.
Брат!!! ))) Ты существуешь!!! ))))))))))) Я всегда так размышляю! ))))))
Тогда наверно лучше цикл начать сначала. Или произвести обратный расчет от начала события. Хотя сбой питания и его последующее включение в течении минут, скорее исключение, чем правило.
Как вариант, если интервал события еще не закончен - начинаем сначала, если уже закончился - на максимум. Для заката лучше ничего и не делать, выключилось, значит выключилось.
Цикл начать сначала - у меня так работает и при первоначальной настройке. Как мы и говорили. Событие ожидается в секундах, а все расчеты в миллисекундах.
Но такой принцип (начать сначала) не правильный при интервалах рассвета или заката в один час. В случае сбоя очень сльно будет заметен скачёк ШИМ.
Лучше сделать все круто - вычисление значения шим в середине цикла рассвета/заката, даже если millis() = 0
если требуется что-то сделать после 08:45, но не позже 19:00, то каким боком тут грёбаные минуты?
Проблема высосана из пальца :)
Не могу согласится. Если думать так, то тогда эпитет этой программе: "и так сойдет". Не хочу. Я делаю для себя и может быть для других, если захотят повторить. Смысл в вышестоящих моих постах.
Не могу согласится. Если думать так, то тогда эпитет этой программе: "и так сойдет". Не хочу. Я делаю для себя и может быть для других, если захотят повторить. Смысл в вышестоящих моих постах.
Ниче непонимаю! Почему нельзя запускать рассвет-закат по RTC, а осуществлять закаты и рассветы по миллисам?
- Время входа в программу есть - из модуля-времени
- Могу расчитать время начала рассвета - из модуля времени и программы
- Могу расчитать время конца рассвета - из программы
- Есть время в миллисекундах - ...
Думаю решу.
кароче, ты реально не понимаешь смысла:
1. нахрена, вообще RTC нужен и откуда взялось минимальное разрешение RTC в 1 секунду.
2. почему на millis() невозможно сделать RTC.
*пока ты бродишь в потёмках в будильником в руках, вместо фонарика, напиши скетч, в котором у тебя рассветы и закаты будут происходить по нажатию кнопок "рассвет", "закат".
затем, замени условия нажатия кнопок на условия совпадения времени RTC.
если тебя и после этого не попустит, то я уже и не знаю.
На всякий случай. Цель: сделать контроллер управления драйверами светодиодов у светильника для морского аквариума. Основная задача: плавный рассвет и закат. Каналов шесть. По сути их будет больше.
Начало рассвета в 10 часов, конец в 11 (для удобства). Получается рассвет в 36000 секунд окончание рассвета в 39600 секунд.
Если все идет своим чередом - вопросов нет. TLC c 36000 до 39600 плавно изменяет значение с 0 до 4095 (12-bit). ЭТО У МЕНЯ РАБОТАЕТ ЧЁТКО И СТАБИЛЬНО ))) (извините, капс)
Но! Если сбой, сброс или еще какая херня. Ну бывает, и я хочу это предусмотреть, а не запускать снова рассвет с 96% (если сбой произошол в районе 39032сек.) с ноля до 4095. А чтоб с 3985 до 4095. И вот эти 3985 мне и нужно вычислить изначально, при сборе. В принципе верю, что у меня получится, но не сегодня ))))
- Время входа в программу есть - из модуля-времени
- Могу расчитать время начала рассвета - из модуля времени и программы
- Могу расчитать время конца рассвета - из программы
- Есть время в миллисекундах - ...
Думаю решу.
кароче, ты реально не понимаешь смысла:
1. нахрена, вообще RTC нужен и откуда взялось минимальное разрешение RTC в 1 секунду.
2. почему на millis() невозможно сделать RTC.
*пока ты бродишь в потёмках в будильником в руках, вместо фонарика, напиши скетч, в котором у тебя рассветы и закаты будут происходить по нажатию кнопок "рассвет", "закат".
затем, замени условия нажатия кнопок на условия совпадения времени RTC.
если тебя и после этого не попустит, то я уже и не знаю.
Я рассказываю людям чё делать. Первый скетч работает "на ура", но там 8-бит. Мне кажется это мало. Хочу 12-бит. Но последний скетч не работает т.к. библиотека fade глючит. Пытаюсь решить через tlc.set
Тем, что отсчет события (рассвета/заката) начинается не с ноля, а при входе например начался минут двадцать назад.
т.е. ты утром просыпаешься, а пиво вчера вечером не выпил - твои действия?
Я просто хочу усмотреть любые варианты.
Например, я случайно сегодня загрузил на "сборку: ардуино-tlc" пример, где светодиоды зажигаются последовалтельно и гаснут. Куда уж проще. И он у меня завис через 30 минут. Да! У меня много времени на тесты )))
Если все идет своим чередом - вопросов нет. TLC c 36000 до 39600 плавно изменяет значение с 0 до 4095 (12-bit). ЭТО У МЕНЯ РАБОТАЕТ ЧЁТКО И СТАБИЛЬНО ))) (извините, капс)
.....................................
12-bit это круто, а нахрена? Пытался различить 255 градаций на светодиоде, не различаю. различаю только от 0 до примерно 10, а дальше не вижу ни какого скачка. Какой диапазон яркости светодиода? Неужели 8 bit не хватит?
Выработайте концепцию: что должно произойти, если свет отключили в начале цикла и включили через 15 минут, включили через 30 минут, включили через пять часов? Аналогично, если отключили в конце цикла. Во всех случаях это разные алгоритмы.
Чисто для паранойи, как вариант, разбиваю диапазон на 10% интервалы и по достижении пишу в EEPROM, вернувшись после отключения продолжаю с запомненного значения.
Для супер паранойи - мониторим напряжение питания, при снижении подключаем резервный источник и фиксируем время и значение ШИМ, по восстановлению продолжаем с запомненного значения. НО, если отключение произошло в момент достижения >50% освещенности и продолжалось длительное время, вы получите достаточно сильную вспышку. Логичнее начинать цикл с начала. Перепад освещенности уже произошел, зачем его усугублять своими действиями?
Слова такого не понимаю. Сбой - это недоработанное железо.
У меня в свое время так Спектрум на холодильник реагировал. Кондер на 68000мкФ решил проблему)))
Простейшая формула:
ТЗШ = (ТЗВ - ВНР) / (ВКР - ВНР) * (ШКР - ШНР) + ШНР
где
ВНР и ВКР - время начала и конца рассвета
ШНР и ШКР - ШИМ начала и конца рассвета
ТЗВ и ТЗШ - текушие значения времени и ШИМ
Но если, после сброса или сбоя, я вхожу в программу. А событие уже наступило десять минут назад. А при таком входе как флаг поднимать, раз оно уже прошло? Как расчитать значения ШИМ? При входе в программу millis() равно нолю, а флаг надбыло поднимать " - 600000 миллисекунд назад".
куда ты входишь после сбоя - ты умер, твоё место на кладбище, лежи и не рыпайся.
следующая копия тебя не будет скорбеть, что ты не успел трахнуть соседку потому, что умер.
Брат!!! ))) Ты существуешь!!! ))))))))))) Я всегда так размышляю! ))))))
Реально ахуел, поржал. Эмоции это жизнь! )
Тогда наверно лучше цикл начать сначала. Или произвести обратный расчет от начала события. Хотя сбой питания и его последующее включение в течении минут, скорее исключение, чем правило.
Как вариант, если интервал события еще не закончен - начинаем сначала, если уже закончился - на максимум. Для заката лучше ничего и не делать, выключилось, значит выключилось.
Цикл начать сначала - у меня так работает и при первоначальной настройке. Как мы и говорили. Событие ожидается в секундах, а все расчеты в миллисекундах.
Но такой принцип (начать сначала) не правильный при интервалах рассвета или заката в один час. В случае сбоя очень сльно будет заметен скачёк ШИМ.
Лучше сделать все круто - вычисление значения шим в середине цикла рассвета/заката, даже если millis() = 0
я в принципе не понимаю сути проблемы:
если требуется что-то сделать после 08:45, но не позже 19:00, то каким боком тут грёбаные минуты?
Проблема высосана из пальца :)
Не могу согласится. Если думать так, то тогда эпитет этой программе: "и так сойдет". Не хочу. Я делаю для себя и может быть для других, если захотят повторить. Смысл в вышестоящих моих постах.
На самом деле я почти понял что нужно делать. Просто нужно посидеть, порисовать карандашиком и набросать формулы расчета. Но это уже в понедельник.
В принципе исходные есть:
- Время входа в программу есть - из модуля-времени
- Могу расчитать время начала рассвета - из модуля времени и программы
- Могу расчитать время конца рассвета - из программы
- Есть время в миллисекундах - ...
Думаю решу.
Не могу согласится. Если думать так, то тогда эпитет этой программе: "и так сойдет". Не хочу. Я делаю для себя и может быть для других, если захотят повторить. Смысл в вышестоящих моих постах.
Ниче непонимаю! Почему нельзя запускать рассвет-закат по RTC, а осуществлять закаты и рассветы по миллисам?
Почему?
В принципе исходные есть:
- Время входа в программу есть - из модуля-времени
- Могу расчитать время начала рассвета - из модуля времени и программы
- Могу расчитать время конца рассвета - из программы
- Есть время в миллисекундах - ...
Думаю решу.
кароче, ты реально не понимаешь смысла:
1. нахрена, вообще RTC нужен и откуда взялось минимальное разрешение RTC в 1 секунду.
2. почему на millis() невозможно сделать RTC.
*пока ты бродишь в потёмках в будильником в руках, вместо фонарика, напиши скетч, в котором у тебя рассветы и закаты будут происходить по нажатию кнопок "рассвет", "закат".
затем, замени условия нажатия кнопок на условия совпадения времени RTC.
если тебя и после этого не попустит, то я уже и не знаю.
ОК.
На всякий случай. Цель: сделать контроллер управления драйверами светодиодов у светильника для морского аквариума. Основная задача: плавный рассвет и закат. Каналов шесть. По сути их будет больше.
Начало рассвета в 10 часов, конец в 11 (для удобства). Получается рассвет в 36000 секунд окончание рассвета в 39600 секунд.
Если все идет своим чередом - вопросов нет. TLC c 36000 до 39600 плавно изменяет значение с 0 до 4095 (12-bit). ЭТО У МЕНЯ РАБОТАЕТ ЧЁТКО И СТАБИЛЬНО ))) (извините, капс)
Но! Если сбой, сброс или еще какая херня. Ну бывает, и я хочу это предусмотреть, а не запускать снова рассвет с 96% (если сбой произошол в районе 39032сек.) с ноля до 4095. А чтоб с 3985 до 4095. И вот эти 3985 мне и нужно вычислить изначально, при сборе. В принципе верю, что у меня получится, но не сегодня ))))
Ниче непонимаю! Почему нельзя запускать рассвет-закат по RTC, а осуществлять закаты и рассветы по миллисам?
Почему?
потому, что мы не видим код, в котором ТС преследуют секунды.
В принципе исходные есть:
- Время входа в программу есть - из модуля-времени
- Могу расчитать время начала рассвета - из модуля времени и программы
- Могу расчитать время конца рассвета - из программы
- Есть время в миллисекундах - ...
Думаю решу.
кароче, ты реально не понимаешь смысла:
1. нахрена, вообще RTC нужен и откуда взялось минимальное разрешение RTC в 1 секунду.
2. почему на millis() невозможно сделать RTC.
*пока ты бродишь в потёмках в будильником в руках, вместо фонарика, напиши скетч, в котором у тебя рассветы и закаты будут происходить по нажатию кнопок "рассвет", "закат".
затем, замени условия нажатия кнопок на условия совпадения времени RTC.
если тебя и после этого не попустит, то я уже и не знаю.
Вот тут http://reefcentral.ru/forum/topic/20560-prostoj-kontroller/
Я рассказываю людям чё делать. Первый скетч работает "на ура", но там 8-бит. Мне кажется это мало. Хочу 12-бит. Но последний скетч не работает т.к. библиотека fade глючит. Пытаюсь решить через tlc.set
Но! Если сбой, сброс или еще какая херня.
блин. снова сбой.
чем твой сбой отличается от штатного запуска?
Но! Если сбой, сброс или еще какая херня.
блин. снова сбой.
чем твой сбой отличается от штатного запуска?
Тем, что отсчет события (рассвета/заката) начинается не с ноля, а при входе например начался минут двадцать назад.
Я рассказываю людям чё делать.
кароче - ты реально задрал.
публикуй код, где тебя преследуют секунды, сбои и белочка.
Тем, что отсчет события (рассвета/заката) начинается не с ноля, а при входе например начался минут двадцать назад.
т.е. ты утром просыпаешься, а пиво вчера вечером не выпил - твои действия?
Тем, что отсчет события (рассвета/заката) начинается не с ноля, а при входе например начался минут двадцать назад.
т.е. ты утром просыпаешься, а пиво вчера вечером не выпил - твои действия?
Я просто хочу усмотреть любые варианты.
Например, я случайно сегодня загрузил на "сборку: ардуино-tlc" пример, где светодиоды зажигаются последовалтельно и гаснут. Куда уж проще. И он у меня завис через 30 минут. Да! У меня много времени на тесты )))
..................................
Если все идет своим чередом - вопросов нет. TLC c 36000 до 39600 плавно изменяет значение с 0 до 4095 (12-bit). ЭТО У МЕНЯ РАБОТАЕТ ЧЁТКО И СТАБИЛЬНО ))) (извините, капс)
.....................................
12-bit это круто, а нахрена? Пытался различить 255 градаций на светодиоде, не различаю. различаю только от 0 до примерно 10, а дальше не вижу ни какого скачка. Какой диапазон яркости светодиода? Неужели 8 bit не хватит?
Например, я случайно сегодня загрузил
береги себя - то не была случайность, дьявол шизофрении играет тобой.
Клапауций дело говорит. Забей в код время начала рассвета и время начала заката. И до кучи границы, в которых они могут плавать.
Например
6-30 - восход. Отложить можно до 8 часов. После тупо свет на максимум сразу.
22-00 - закат. Если стартанули после 22-00, то ничего не делаем и ждем восхода.
ШИМ растягиваешь на продолжительность восхода и заката. Это можно вообще одной функцикей сделать, передавая знак.
Например, 1024 секунды на все дела.
12 бит = 4096 уровней.
Каждую секунду делаешь 4*знак.
В итоге за 1024/60 = 17 минут на все дела.
Выработайте концепцию: что должно произойти, если свет отключили в начале цикла и включили через 15 минут, включили через 30 минут, включили через пять часов? Аналогично, если отключили в конце цикла. Во всех случаях это разные алгоритмы.
Чисто для паранойи, как вариант, разбиваю диапазон на 10% интервалы и по достижении пишу в EEPROM, вернувшись после отключения продолжаю с запомненного значения.
Для супер паранойи - мониторим напряжение питания, при снижении подключаем резервный источник и фиксируем время и значение ШИМ, по восстановлению продолжаем с запомненного значения.
НО, если отключение произошло в момент достижения >50% освещенности и продолжалось длительное время, вы получите достаточно сильную вспышку. Логичнее начинать цикл с начала. Перепад освещенности уже произошел, зачем его усугублять своими действиями?
что должно произойти, если свет отключили
у него не свет отключают - у него сбои...
что должно произойти, если свет отключили
у него не свет отключают - у него сбои...
Слова такого не понимаю. Сбой - это недоработанное железо.
У меня в свое время так Спектрум на холодильник реагировал. Кондер на 68000мкФ решил проблему)))
вычисление значения шим в середине цикла рассвета
Простейшая формула:
ТЗШ = (ТЗВ - ВНР) / (ВКР - ВНР) * (ШКР - ШНР) + ШНР
где
ВНР и ВКР - время начала и конца рассвета
ШНР и ШКР - ШИМ начала и конца рассвета
ТЗВ и ТЗШ - текушие значения времени и ШИМ
Скептицизм - дело хорошее.
В общем проблему решил. Как и говорил, нужно было немного подумать.
Рабочий скетч контроллера выложил в Сеть. http://reefcentral.ru/forum/topic/20560-prostoj-kontroller/?p=315862
- Рассвет/закат на 12 битах. При этом никакие сбои или запуски на середите цикла не страшны. Работает строго по программе.
- Шесть каналов.
- Управляемый ШИМ вентилятор от теромдатчика.