Arduino + DS18B20 + Serial Enabled sparkfun LCD

Hi Guys,

I am the definition of noob...and am attempting to put together a little temperature unit to monitor the temperature in my roof. My son has advanced asthma and need to monitor different temperatures to minimise the growth of spores in the house.
I have the temperature reading via the serial port of the computer, but now need it to read to the LCD. And this is where I am lost.
I have attached the DS18B20 code below, any help on making it read to the LCD would be much appreciated.

#include <OneWire.h>

int DS18S20_Pin = 2; //DS18S20 Signal pin on digital 2

//Temperature chip i/o
OneWire ds(DS18S20_Pin); // on digital pin 2

void setup(void) {
 Serial.begin(9600);
}

void loop(void) {
 float temperature = getTemp();
 Serial.println(temperature);
 
 delay(100); //just here to slow down the output so it is easier to read
 
}


float getTemp(){
 //returns the temperature from one DS18S20 in DEG Celsius

 byte data[12];
 byte addr[8];

 if ( !ds.search(addr)) {
   //no more sensors on chain, reset search
   ds.reset_search();
   return -1000;
 }

 if ( OneWire::crc8( addr, 7) != addr[7]) {
   Serial.println("CRC is not valid!");
   return -1000;
 }

 if ( addr[0] != 0x10 && addr[0] != 0x28) {
   Serial.print("Device is not recognized");
   return -1000;
 }

 ds.reset();
 ds.select(addr);
 ds.write(0x44,1); // start conversion, with parasite power on at the end

 byte present = ds.reset();
 ds.select(addr);  
 ds.write(0xBE); // Read Scratchpad

 
 for (int i = 0; i < 9; i++) { // we need 9 bytes
  data[i] = ds.read();
 }
 
 ds.reset_search();
 
 byte MSB = data[1];
 byte LSB = data[0];

 float tempRead = ((MSB << 8) | LSB); //using two's compliment
 float TemperatureSum = tempRead / 16;
 
 return TemperatureSum;
 
}

Cheers,

Ant_B

Just find an example sketch to output to the LCD and it should be fairly obvious how to replace Serial.print() with LCD output. The place where you bought the LCD will usually have pointers to example code.

In your temperature-reading code I think you are supposed to put a 750 millisecond delay between starting a conversion and reading the scratchpad. It takes that long for the temperature chip to get the reading and load the scratchpad.

What will you do with the temperature information once you have it? If you're planning to run an extractor fan in the attic when the temperature is spore optimal, perhaps the arduino could control that for you too.

johnwasser:
In your temperature-reading code I think you are supposed to put a 750 millisecond delay between starting a conversion and reading the scratchpad. It takes that long for the temperature chip to get the reading and load the scratchpad.

Or, just use the DallasTemperature library. It has the delay already there. There are shorter delays, for lower resolution, if you want to trade speed for that.