Действия по времени
- Войдите на сайт для отправки комментариев
Втр, 10/09/2013 - 19:16
Здравствуйте, собственно задача управлять нагрузками в определённое время, но так, чтобы loop выполнялся не зависимо от времени... что-то типа
int time; //какая-то переменная с временем
void loop(){
if(time == 14.40 ){ ...действие1 }
if(time == 16.20 ){ ...действие2 }
if(time == 19.55 ){ ...действие3 }
...
}
Может гуру подскажут варианты реализаций...заранее спасибо!
В программировании новичёк, изредко работаю с php, так что не пинайте...
Спасибо за ссыли из гугла, аж неудобно стало что не нашел сам :)
Вот идея с часами DS1307 приглянулась, тоесть можно будет сделать как-то так?
void loop() { int Hour = RTC.get(DS1307_HR,true); int Minute = RTC.get(DS1307_MIN,true); if( Hour = 14 && Minute = 20 ){digitalWrite(my1_PIN, HIGH)} else digitalWrite(my1_PIN, LOW); if( Hour = 16 && Minute = 40 ){digitalWrite(my2_PIN, HIGH)}; else digitalWrite(my3_PIN, LOW); // и так далее ... // прочий код программы }ronny99, если будете добавлять более сложные действия учтите, что за одну минуту; например, пока на часах 14:20 метод loop может прокрутиться более одного раза, а может и более тысячи раз...
спасибо, а если например нужно включать что-либо на 20 минут каждые 2 часа, как лучше реальзовать?
Защита от отключения в случае случайной перезагрузки (или если повиснет):
Зачем нужно "hr%2"???
Зачем нужно "hr%2"???
На языке программирования это и есть "каждые два часа". (Остаток от деления на 2).
А если нужно каждую минуту? То"min%1"???
А если нужно каждую минуту? То"min%1"???
Да. Только не забывай что в минуте 60 секунд и за эти 60 секунд условие проверится многократно и если не будет других условий то ваш генератор по времени может работать некоректно.
И что можно сделать? Задержку ввести?
А если нужно каждую минуту? То"min%1"???
Микросхема часов сама умеет выдавать прерывания раз в минуту. Надо просто завести его на пин и обрабатывать.
Кроме того, Вы сами-то видите, что Вы пишете? Вам же сказали, % - остаток от деления. Какой нахрен "min%1"????? Чему по-Вашему равен остаток от деления ЛЮБОГО целого числа на единицу?
А если нужно каждую минуту? То"min%1"???
Микросхема часов сама умеет выдавать прерывания раз в минуту. Надо просто завести его на пин и обрабатывать.
Кроме того, Вы сами-то видите, что Вы пишете? Вам же сказали, % - остаток от деления. Какой нахрен "min%1"????? Чему по-Вашему равен остаток от деления ЛЮБОГО целого числа на единицу?
- Мне нужно раз в секунду и раз в минуту...
Завел на пин, а дальше? мне-то нужно генерировать меандр..
- остаток будет равен нулю (если число целое).. Надо наверно писать сек%60 для минут и %1000 для секунд?
- Мне нужно раз в секунду и раз в минуту...
Она умеет и раз в минуту и раз в секунду (а заодно и раз в час и раз в сутки).
А что потом делать, что надо, то и делайте. Пришло на пин прерывание, вот и деоатйте что Вам нужно. Но не нужны никакие "спрашивания времени" и дурацкие сравнения, которые Вы к тому же писать не умеете