Desculpem lá... mas não sabem ler...
marcosxp:
Bom dia, quando disse instável seria entre a variação de temperatura se ela esta definida entre armar em 30 Graus e a temperatura fica alternando entre 29,99 e 30 ele fica ligando e desligando o led.
Isto é assim porque o código está feito desta forma:
if (temperatura >= 30) digitalWrite(led, HIGH);
else digitalWrite(led, LOW);
Isto está errado e não deve nunca ser feito assim. Até controladores PID têm histerese.
Fazer uma média das temperaturas não resolve o problema. Pode minimizá-lo, mas não o resolve pois a temperatura pode passar de 29.99 para 30.0 e de volta abaixo de 30 com qualquer que seja o sensor.
Para resolver isto implementa-se uma histerese desta forma:
#define HISTERESE 1.0 // 1 grau de histerese.
#define SETPOINT 30.0 //setpoint de 30 graus.
if (temperatura <= SETPOINT) digitalWrite(led, HIGH);
if (temperatura < (SETPOINT + HISTERESE)) digitalWrite(led, LOW);
Depois dependendo da estabilidade do sensor poder-se-á ajustar a histerese para um valor menor ou maior.