2014-11-08 2 views
0

온도가 다른 수보다 높을 때 온도가 낮을 ​​때 전원을 켜고 그 반대의 경우 전원을 끌 필요가 있습니다. 그래서 나는이 스케치온도에 따른 Arduino a/c 제어

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 명령을 온도가 즉시 변경하지 않는 것이 주어진 모든 루프 사이클을 보낼 수 있습니다. 한 번만 ON 및 OFF 명령을 전송하고 다른 명령을 전송할 때까지 기다릴 수 있습니까? 마지막으로 보낸 명령을 저장하는 것으로 생각했지만 어떻게 해야할지 모르겠습니다. 감사합니다

답변

0

if 문을 제대로 작성하지 않았습니다. 또한 테스트가 이미 실행중인 경우 추가하십시오. 다음과 같이 할 수 있습니다 :

이것은 글로벌 변수 여야하므로 루프 외부에서 파손되지 않습니다.

boolean isOn = false; 

이것은 void loop() 또는 다른 다른 함수로 직접 이동할 수 있으므로 필요에 따라 호출 할 수 있습니다.

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 부울을 사용하여 토글해야하는지 확인합니다.

온도 범위를 제공하려면 필요할 경우 온도 조건 부분을 완료하는 데 도움이 될 수 있습니다.

+0

제안 된 개선을 위해 @UncleO에 감사드립니다. – djUniversal

관련 문제