control ventiladores y un maldito boton :)

a ver q opinais de este metodo q he encontrado para calcular la temperatura, la verdad es q ya no me pasa lo del delay de una manera tan exagerada tenias razon al usar los samples x8 tb el delay era por x8 asi es mas real

la verdad q lo del smooth no lo di aplicado al lm35 :frowning: pero estoy en ello :slight_smile:

os pongo el código a ver q opinais gracias por vuestra ayuda sois la caña.

int fan = 11;
int valor;
const int buttonPin = 7;
const int ledPin = 13;
int pul = 0;
int buttonPushCounter = 0;
int buttonState = 0;
int lastButtonState = 0;
int relem = 12;
float tempValor = 0;
float pinTemperatura = 0;
float celsius = 0;

void setup()

{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
pinMode(relem, OUTPUT);
Serial.begin(9600);
}

void loop()

{

pinTemperatura = analogRead(0);
tempValor = (pinTemperatura*5000)/1024;
tempValor = tempValor-500;
celsius = tempValor/10;
delay (100);

Serial.print("La Temperatura en este momento es de: (Celsius) = ");
Serial.println(celsius);

int valor = celsius*255/37;
analogWrite(fan,valor);
if (valor > 200){
analogWrite(fan,255);
}

buttonState = digitalRead(buttonPin);
if (buttonState != lastButtonState) {
if (buttonState == HIGH) {
buttonPushCounter++;
}
}

lastButtonState = buttonState;
if (buttonPushCounter % 2 == 0) {
digitalWrite(relem, LOW);
digitalWrite(ledPin, HIGH);
}
else {
digitalWrite(ledPin, LOW);
digitalWrite(relem, HIGH);
analogWrite(fan,0);
}

}