Go Down

### Topic: Temp measurement and display (Read 1 time)previous topic - next topic

#### dtokez

##### Aug 15, 2011, 12:16 am
hi all, just messing around and getting used to the arduino.

I've hooked up a 10k thermistor and got it working using a tutorial to feedback data over serial. I have added too the code to display on my lcd screen. It works but when the temp goes below 10 degrees the display moves the digit over so for example 9 degrees reads 90. It does not display like this on the serial monitor however, but I used the same code to get the data over the display?
Hope that makes sense!

Code: [Select]
`#include <LiquidCrystal.h>LiquidCrystal lcd(7, 8, 9, 10, 11, 12);#include <math.h>double Thermister(int RawADC) { double Temp; Temp = log(((10240000/RawADC) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp ); Temp = Temp - 273.15;            // Convert Kelvin to Celcius return Temp;}void setup() {lcd.begin(16, 2);delay(100); Serial.begin(115200);}void loop() {        lcd.setCursor(0,0);lcd.print(int(Thermister(analogRead(0))));    lcd.setCursor(2,0);  lcd.print((char)223);        lcd.setCursor(3,0);    lcd.print ("c"); Serial.println(int(Thermister(analogRead(0))));  // display Fahrenheit delay(1000);}`

#### dtokez

#1
##### Aug 15, 2011, 12:32 am
right, if i reset the board when the temp is below 10 degrees the lcd displays fine, so I guess when it goes below 10 I need to clear the display or something?

#### EmilyJane

#2
##### Aug 15, 2011, 12:36 am

right, if i reset the board when the temp is below 10 degrees the lcd displays fine, so I guess when it goes below 10 I need to clear the display or something?

You need to clear out, write spaces, where your temperature goes before you write a new value.

#### dtokez

#3
##### Aug 15, 2011, 01:03 amLast Edit: Aug 15, 2011, 01:14 am by dtokez Reason: 1
hey, thanks that works great. I'm still really new to the arduino but learning little bits here and there especially thanks to people like yourself

would it be complicated to have the degrees c symbol move to the left by one space when the temperature reading is in single figures?

Edit...

tried putting in if/else statements. It does compile and run but when the temp is <10 i get two degrees symbols for example 2°°C?

is it ignoring the if/else and just running both?

Code: [Select]
`#include <LiquidCrystal.h>LiquidCrystal lcd(7, 8, 9, 10, 11, 12);#include <math.h>double Thermister(int RawADC) { double Temp; Temp = log(((10240000/RawADC) - 10000)); Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp ))* Temp ); Temp = Temp - 273.15;            // Convert Kelvin to Celcius return Temp;}void setup() {lcd.begin(16, 2);delay(100); Serial.begin(115200);   pinMode(13, OUTPUT);     }void loop() {    lcd.clear();        lcd.setCursor(0,0);lcd.print(int(Thermister(analogRead(0))));if (int(Thermister(analogRead(0)))  <= 10){  lcd.setCursor(1,0);  lcd.print((char)223);        lcd.setCursor(2,0);    lcd.print ("c");  // action A}else if (int(Thermister(analogRead(0)))  >= 10){  lcd.setCursor(2,0);  lcd.print((char)223);        lcd.setCursor(3,0);    lcd.print ("c");  // action B}    lcd.setCursor(2,0);  lcd.print((char)223);        lcd.setCursor(3,0);    lcd.print ("c"); Serial.println(int(Thermister(analogRead(0))));  // display Fahrenheit    digitalWrite(13, HIGH);   // set the LED on  delay(2);              // wait for a second  digitalWrite(13, LOW);    // set the LED off  delay(10000);              // wait for a second }`

#### EmilyJane

#4
##### Aug 15, 2011, 01:11 am
Instead of explicitly moving the cursor to the third column you could just print the degrees symbol and "c" immediately after the temperature. If you don't explicitly move it, it prints in the next available space.

Code: [Select]
`void loop() {        lcd.setCursor(0,0);lcd.print(int(Thermister(analogRead(0))));  // lcd.setCursor(2,0);  lcd.print((char)223);    //    lcd.setCursor(3,0);    lcd.print ("c");`

#### dtokez

#5
##### Aug 15, 2011, 01:29 am
Thanks  I thought you had to tell the characters exactly where to be placed. so that's much better now.

I edited the post while you where replying DOH

out if interest, what was I doing wrong with the if/else statements?

#6
anyone know?

thanks

#### liudr

#7
##### Aug 16, 2011, 12:21 am
This question pops up on a regular basis. Simple solutions I always provide (assume temperature is integer):

Code: [Select]
`lcd.setCursor(what,ever);if (temp<10) lcd.write('0');lcd.print(temp);`

Don't use lcd.clear. It makes your screen flash and dim.

If you need to assure 100 degree, just add "if (temp<100) lcd.write('0');" before the other if.

#### robtillaart

#8
##### Aug 16, 2011, 12:39 am

Or if you prefer spaces iso leading zero's
(based upon code above)
Code: [Select]
`lcd.setCursor(right, position);if (temp<10) lcd.write(' ');  // space lcd.print(temp);`
Rob Tillaart

Nederlandse sectie - http://arduino.cc/forum/index.php/board,77.0.html -
(Please do not PM for private consultancy)

#### liudr

#9
##### Aug 16, 2011, 02:59 am
Or trailing space, ...

Go Up

Please enter a valid email to subscribe