hi fernando
let's see if this method can go

.
I do not know anything about programming but I'm trying to apply myself to understand how to make and I hope also with your help
I defined three boolean variable is then thought to modify the code like this:
if (tempC < (setTempC + offTempC + alarmTempC) && tempC > (setTempC - offTempC - alarmTempC))
{
bitWrite(status_parametros,2,0);
}
if (alarmTempC > 0) // Aciona alarme
{
if ((tempC >= (setTempC + offTempC + alarmTempC)) || (tempC <= (setTempC - offTempC - alarmTempC)))
{
bitWrite(status_parametros,2,1);
}
}
if ((tempC < (setTempC + offTempC)) && (tempC > (setTempC - offTempC))) // Desliga aquecedor e chiller
{
bitWrite(status_parametros,0,0);
bitWrite(status_parametros,1,0);
digitalWrite(aquecedorPin, LOW);
digitalWrite(chillerPin, LOW);
}
if (offTempC > 0)
{
if ((tempC > (setTempC + offTempC))) // ocorre entre ligar o chiller
{
temperatura_max_set = true;
temperatura_ok = false;
temperatura_min_set = false;
}
if ((tempC < (setTempC - offTempC))) // ocorre entre ligar o aquecedor
{
temperatura_min_set = true;
temperatura_ok = false;
temperatura_max_set = false;
}
if (temperatura_max_set == true) // ocorre entre desligar o chiller
{
if ((tempC <= (setTempC)))
{
temperatura_max_set = false;
temperatura_ok = true;
}
}
if (temperatura_min_set == true)
{
if ((tempC >= (setTempC))) // ocorre entre desligar o aquecedor
{
temperatura_min_set = false;
temperatura_ok = true;
}
}
if (temperatura_max_set == true) // Liga o chiller
{
bitWrite(status_parametros,0,1);
digitalWrite(chillerPin, HIGH);
}
if (temperatura_min_set ==true) // Liga o aquecedor
{
bitWrite(status_parametros,1,1);
digitalWrite(aquecedorPin, HIGH);
}
if (temperatura_ok==true) //desliga o chiller e aquecedor
{
bitWrite(status_parametros,0,0);
bitWrite(status_parametros,1,0);
digitalWrite(aquecedorPin, LOW);
digitalWrite(chillerPin, LOW);
}
}
if ((tempC > 50) || (tempC <10))
{
bitWrite(status_parametros,0,0);
bitWrite(status_parametros,1,0);
digitalWrite(aquecedorPin, LOW);
digitalWrite(chillerPin, LOW);
}
if ((bitRead(status_parametros, 0) == true) && (bitRead(status_parametros, 1) == true)) // Evita aquecedor e chiller ligados ao mesmo tempo.
{
bitWrite(status_parametros,0,0);
bitWrite(status_parametros,1,0);
digitalWrite(aquecedorPin, LOW);
digitalWrite(chillerPin, LOW);
}
int tempval = int(tempH * 10);
fanSpeed = map(tempval, (HtempMin * 10), (HtempMax * 10), 0, 255); // Controle de velocidade das ventoinhas do dissipador
if (fanSpeed < 0)
{
fanSpeed = 0;
}
if (fanSpeed > 255)
{
fanSpeed = 255;
}
analogWrite(fanPin, fanSpeed);
if(tempH < HtempMin) // Desativa os coolers se a temperatura estive abaixo da mínima definida.
{
digitalWrite(desativarFanPin, LOW);
}
else
{
digitalWrite(desativarFanPin, HIGH);
}
}