Go Down

Topic: comprar lectura DS18B20 con valor predeterminado (Read 851 times) previous topic - next topic

Estoy tratando de tomar la lectura que genera el sensor de temperatura y compararla con un valor que yo le asigne al Arduino, para que al llegar a este valor encienda un relevador de 5v. El problema es que intento hacerlo con un simple if pero no responde a la manera que necesito, vaya, no a la temperatura que yo le asigno (en realidad ni siquiera s[e si le asigno bien la temperatura) por ejemplo pongo:

Code: [Select]
{
  if (tempC == 30) digitalWrite(OnPin, HIGH)
}


Coloco el valor 30 ya que busco que encienda el pin asignado a los 30 grados centigrados. Pero al subirle la temperatura al sensor este nunca enciende.

alguien ha tenido problemas similares para hacer comparaciones con lecturas seriales?

Saludos y gracias por su ayuda!

Humphrey

Buenas,

El problema puede ser la condición que indicas, que es que la temperatura sea exactamente igual a 30º. Creo recordar que el ds18b20 da la temperatura con 2 decimales y ahí puede estar el problema que no sea exactamente 30º.
Si lo que quieres hacer es que se encienda cuando la temperatura sea mayor que 30º  debes cambiar la condicion a:  if (tempC > 30).

Un saludo.

Sergegsx

prueba
Code: [Select]

if (tempC >= 30) digitalWrite(OnPin, HIGH)

yOPERO

Code: [Select]
if (31>tempC >= 30) digitalWrite(OnPin, HIGH)//rango entre 30.00 y  31.00
Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

muchas gracias por la ayuda, puse la condicion en un "igual o mayor que" así como usar decimales y funciono.

Saludos!

jray

Osea: la cosa era tener en cuenta el tipo de datos que devuelve la función tempC.

Tipos de datos, castings, cosas importantes!!

Go Up