Hola amigos quisiera saber si esta parte del código esta bien, lo demás si me sirve, si me muestra la temperatura y todo.
la parte de este código consiste en que tengo una placa calefactora que tiene que prender cuando aya 28 grados, apagarse cuando este a 30 grados, (en 29 debe estar apagada por que es la temperatura ideal), lo controlo por relé, por medio del pin 7
TemEncendidoPlaca: 28°
TemApagadoPlaca : 30°c
temp = sensor de temp
// control de placa
if (temp < TemEncendidoPlaca){ //Se enciende placa
digitalWrite(7,HIGH);
}
if (temp > TemEncendidoPlaca, temp < TemApagadoPlaca){ //placa apagada por temperatura ideal
digitalWrite(7,LOW);
}
if (temp > TemApagadoPlaca){ // Se apaga placa por exceso de temperatura.
digitalWrite(7,LOW);
}
delay(3000);
}
No estoy seguro si esta parte del codigo esta bien escrita
if (temp > TemEncendidoPlaca, temp < TemApagadoPlaca){ //placa apagada por temperatura ideal
digitalWrite(7,LOW);
}
Ahi digo que el pin 7 debe estar apagado si la temperatura es menor que 30 y mayor que 28
Hola.
Primero la contestación a la pregunta. Las condiciones se pueden unir mediante or (||) o and (&&). En tu caso lo quieres unir con and:
if (temp > TemEncendidoPlaca && temp < TemApagadoPlaca){ //placa apagada por temperatura ideal
digitalWrite(7,LOW);
}
Ahora, lo que veo ilógico. Haces tres if:
Si temperatura menor que temperatura de encendido, enciende.
Si temperatura mayor que temperatura de encendido y menor que temperatura de apagado, apaga.
Si temperatura mayor que temperatura de apagado, apaga.
Tal como dices, se reduciría fácilmente a dos:
Si temperatura menor que temperatura de encendido, enciende.
Si temperatura mayor que temperatura de encendido, apaga.
O mejor aún, a un if/else:
Si temperatura menor que temperatura de encendido, enciende, y si no, apaga.
if (temp < TemEncendidoPlaca){ //placa apagada por temperatura ideal
digitalWrite(7, HIGH);
} else {
digitalWrite(7, LOW);
}
No, no está correcto ese if. Cuando quieres utilizar más de una condición, debes hacerlo con and y or.
Pero en este caso, no es necesario ese if, ya que con las dos condiciones que pusiste debería funcionar bien, solo faltaría anidarlas con un else if
if (temp < TemEncendidoPlaca){ //Se enciende placa
digitalWrite(7,HIGH);
} else if (temp > TemApagadoPlaca){ // Se apaga placa por exceso de temperatura.
digitalWrite(7,LOW);
}
También, es recomendable que utilices la función millis en vez de delay.