Всем привет. Необходимо включить реле в определенное время и выключить и снова включить и выключить по времени.
int set_on0 = 8;
int set_off0= 10;
int set_on1 = 17;
int set_off1= 23;
if(set_on0 == set_off0){
digitalWrite(Relay, LOW);
}
if(set_on1 == set_off1){
digitalWrite(Relay, LOW);
}
if (now.hour() >= set_on0 && now.hour() <= set_off0)
{
digitalWrite(Relay, HIGH);
}
else if (now.hour() >= set_on1 && now.hour() < set_off1)
{
digitalWrite(Relay, HIGH);
}
else
{
digitalWrite(Relay, LOW);
}
На сколько корректно условие проверки времени???
BOOM
31.Октябрь.2022 18:22:41
2
Что за бред? Когда оно по вашему выполнится? И это я ещё дальше читать не стал.
К тому же код не полный. Что за объект (или структура) now?
Kakmyc
31.Октябрь.2022 18:46:39
3
Функция now() библиотеки Time возвращает текущее время в формате time_t
Да это из библиотеки ds1307. С верхним согласен, чет тупал, на самом деле не выполнится.
if (now.hour() >= set_on0 && now.hour() < set_off0)
{
digitalWrite(Relay, HIGH);
}
else if (now.hour() >= set_on1 && now.hour() < set_off1)
{
digitalWrite(Relay, HIGH);
}
else
{
digitalWrite(Relay, LOW);
}
Сейчас с другим столкнулся. Если set_off1 задано 23 часа, то все работает четко
int set_off1 = 23;
if (now.hour() >= set_on1 && now.hour() < set_off1)
{
digitalWrite(Relay, HIGH);
}
, но если поставить set_off1 = 00, то условие не выполняется ((( Почему так происходит??? СПАСИБО
А какой час может быть меньше 0, чтобы условие хотя бы имело шанс исполнится?
1 лайк
ХЗ! Код приведён не полностью.
Спасибо, все исправил.
‘’’
if (now.hour() >= set_on0 && now.hour() < set_off0)
{
digitalWrite(Relay, HIGH);
}
else if (now.hour() >= set_on1 && (now.hour() <= set_off1 && now.minute() <= set_offmin1))
{
digitalWrite(Relay, HIGH);
}
else
{
digitalWrite(Relay, LOW);
}
‘’’
BOOM
31.Октябрь.2022 19:21:21
9
А давно ли объект стал функцией?
b707
31.Октябрь.2022 20:24:15
10
maksmkv:
Спасибо, все исправил.
На будущее - если у вас время начала и конца интервала задано не только в часах, но еще и в минутах - удобнее перевести все интервалы в “минуты после полуночи” ( то есть now.hour() * 60 + now.minute()) - считать будет проще.
3 лайка
Спасибо. Вот об этом в книгах не пишут. )))
ua6em
04.Ноябрь.2022 04:47:33
13
ЕвгенийП:
Это Вы не читаете
видимо читает, но не те )))