Go Down

Topic: comprar lectura DS18B20 con valor predeterminado (Read 882 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy