Pages: [1]   Go Down
Author Topic: comprar lectura DS18B20 con valor predeterminado  (Read 767 times)
0 Members and 1 Guest are viewing this topic.
Monterrey, México
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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:
{
  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!
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 10
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged

0
Offline Offline
Edison Member
*
Karma: 17
Posts: 1413
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

prueba
Code:
if (tempC >= 30) digitalWrite(OnPin, HIGH)
Logged

* Si preguntas, pon el código de tu programa, hace mucho mas fácil ayudarte. Y me ahorro un mensaje pidiendo que lo hagas.
* Si consigues solucionar tu problema, dedica unos minutos a explicar en tu post como lo conseguiste para beneficio de todos.
* Cambia el 'Subject' de tu hilo y añade 'SOLUCIONADO' cuando hayas llegado a una solución al problema que planteaste.
* Utiliza un 'Subject' para tu hilo que explique de que va el hilo.
Si estas empezando:
* Comienza a usar Arduino
* Guías de iniciación a Arduino
* Ejemplos
* Referencia del Lenguaje
* Conceptos básicos
Guia de usuario de arduino
Tutoriales en Ingles
Si necesitas que alguien te escriba el código: http://www.freelancer.com/  o esta  http://www.guru.com/

Madrid
Offline Offline
Sr. Member
****
Karma: 5
Posts: 481
Life isn't about finding yourself, life is about creating yourself!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Code:
if (31>tempC >= 30) digitalWrite(OnPin, HIGH)//rango entre 30.00 y  31.00
Logged

Engineering is the art of
making what you want from
things you can get.

     

[SOLUCIONADO]

Monterrey, México
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Saludos!
Logged

Offline Offline
Jr. Member
**
Karma: 3
Posts: 88
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Tipos de datos, castings, cosas importantes!!
Logged

Pages: [1]   Go Up
Jump to: