Arduino управление кондиционером по температуре

Мне нужно включить кондиционер, когда температура ниже определенного значения, и наоборот, выключить его, когда температура станет выше другого значения. Итак, я попробовал этот скетч

  if (DHT.temperature,1 >= 0 &&  DHT.temperature,1 <=18)
  irsend.sendRaw(ON, sizeof(ON)/sizeof(int),khz);
  else if
  irsend.sendRaw(OFF, sizeof(OFF)/sizeof(int),khz);

но он отправляет команду OFF каждый цикл цикла, учитывая, что температура не меняется немедленно. Можно ли отправить команду ВКЛ и ВЫКЛ только один раз за цикл и дождаться ее изменения для отправки другой команды? Я думал сохранить последнюю отправленную команду, но я не знаю, как это сделать. Спасибо


person user3437592    schedule 08.11.2014    source источник


Ответы (1)


Вы не правильно написали оператор if. Также добавьте тест, если он уже включен. Вы можете сделать это следующим образом:

Это должна быть глобальная переменная, чтобы она не была уничтожена вне вашего цикла ниже.

boolean isOn = false;

Это может перейти непосредственно в ваш цикл void() или другую другую функцию, чтобы вы могли вызывать ее по мере необходимости.

if (tempCondition && (!isOn)){
    irsend.sendRaw(ON, sizeof(ON)/sizeof(int),khz);
    isOn = true;
}
else if (othertempCondition && isOn) {
    irsend.sendRaw(OFF, sizeof(OFF)/sizeof(int),khz);
    isOn = false;
}

Это проверит температуру и, если это правда, проверит, нужно ли переключаться с помощью логического значения isOn.

Если вы хотите предоставить диапазоны температур, я могу помочь заполнить части временных условий, если вам это нужно.

person djUniversal    schedule 08.11.2014
comment
Спасибо @UncleO за предложенное улучшение - person djUniversal; 08.11.2014