Go Down

Topic: Mostrar temperatura en display LCD de Grove (Read 2563 times) previous topic - next topic

otto69

Compre en seedstudio un kit que viene con un display LCD http://www.seeedstudio.com/wiki/Grove_-_Serial_LCD_v1.0b y un Arduino UNO, una de las primeras pruebas que hice fue mostrar la temperatura que recojo de un sensor, pues bien ahí es donde tengo el problema, solo me muestra las unidades, o sea lo que hay antes del punto.

Este código me muestra 20 (por ejemplo) y la temperatura es 20.35 (por ejemplo) que es la lectura que obtengo por la salida serie y que visualizo en el IDE de Arduino.

Algo estoy haciendo mal?

Gracias.

Adjunto codigo:

Code: [Select]

/*
  Temperatura en LCD
*/

// include the library code:
#include <SerialLCD.h>
#if ARDUINO < 100
#include <NewSoftSerial.h> //this is a must
#else
#include <SoftwareSerial.h>
#endif

int a;
int del=1000; // duration between temperature readings
float temperatura = 0.0;
int B=3975;
float resistencia;


// initialize the library
SerialLCD slcd(11,12);//this is a must, assign soft serial pins

void setup() {
  // set up
  slcd.begin();
  // Print a message to the LCD.
  slcd.print("Temperatura:");
   
  Serial.begin(9600);
 
}

void loop() {
 
   a=analogRead(0);
   resistencia=(float)(1023-a)*10000/a;
   temperatura=1/(log(resistencia/10000)/B+1/298.15)-273.15;
   delay(del);

  slcd.setCursor(0, 1);
   
  slcd.print(temperatura, DEC);
  // slcd.print(".00");
   
  Serial.println(temperatura);
}



fm

Quote
slcd.print(temperatura, DEC);


cambialó por:

Code: [Select]
slcd.print(temperatura);

o

slcd.print(temperatura, 2);


A ver que tal funciona.
   

otto69

Gracias por responder fm, no funciona es una de las primeras cosas que probé, decirle el nº de decimales.

Puede ser que este display no sea capaz de mostrar algo tan simple??

Gracias.

fm

Hola, un último intento: prueba definir temperatura como un double. En el caso de que no funcione, tendrías que modificar el driver. A no ser que no estés utilizando la versión 1.0 del entorno Arduino. Aunque tampoco te podría decir con seguridad si funcionaría o no.
   

otto69

#4
Feb 03, 2012, 01:00 pm Last Edit: Feb 03, 2012, 01:03 pm by otto69 Reason: 1
Curioso, he vuelto a hacer la prueba modificando el código que me comentas y estos son los resultados.

Code: [Select]
slcd.print(temperatura);

Devuelve: nada

Code: [Select]
slcd.print(temperatura, 2);

Devuelve: 10000

Curioso el tema, he probado con double y el mismo resultado que el anterior. Sí trabajo con la 1.0

Gracias again

otto69

fm, voy a probar con la 022 o 023 porque igual el problema lo tengo que la libreria SerialLCD que viene con el display no se lleva muy bien con la versión de SoftwareSerial que viene con la 1.0 que si no estoy equivocado cambió con el cambio de versión.

A ver si me pasa como lo comentado en este enlace http://arduino.cc/forum/index.php?topic=89381.0

Gracias,

otto69

Bueno no hay manera, he probado mil y uno combinaciones, lo dejo en standby por si alguna alma caritativa que tenga este mismo kit con este display me haga la prueba con el código que puse en el inicio del post.

Me recomendais algún display aunque sea en color y mas grande, pero que sea mas standar??

Saludos, 

Go Up