Странное вижу: ktemp выставляется в true только после включения обогревателя, но второе условия проверяет что ktemp = true и снова включает обогреватель. Но к проблеме, думаю, оно не относится.
Ветка else сработает только если включен обогрев, и температура в пределах t1+0.5 - t1 + 3. Подозреваю, что этот промежуток система пролетает очень быстро и начинается ветка else if (temp_atmosphere > (t1 + 3), в которой ktemp не сбрасывается. Поясните, кстати, назначение ktemp - не совсем понял зачем оно.