Trying to convert celsius to farenheit temp reading

I am trying to figure out how to convert the Celsius temp to a Farenheit reading. Any help would be great. Thanks

//Initial I2C LCD example from:
// http://arduino-info.wikispaces.com/LCD-Blue-I2C

// Initial DS18B20 example from:
// http://bildr.org/2011/07/ds18b20-arduino/

// Read the DS18B20 and then write to an I2C LCD and serial monitor
// Arduino + DS18B20 + I2C LCD — www.HOAGLUN.com

#include <Wire.h>
#include <OneWire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3F,20,4); // set the LCD address to 0x27 for a 16 chars and 2 line display

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

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

void setup(void) {
Serial.begin(9600);
lcd.init(); // initialize the lcd

// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Reef Controller");
// lcd.setCursor(0, 1);
// lcd.print("Second Line");

}

void loop(void) {
float temperature = getTemp();
Serial.println(temperature);
lcd.setCursor(0, 1);
lcd.print(temperature);

delay(500); //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 = 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;*

}

I believe you are on the wrong tram, and just need a decent tutorial.

As I understand it, the conversion is included in the library, and you just need to call it. No calculations required

I will calculate like this : temperatureF = (temperatureCelsius * 1.8) + 32
So for 20°C you will have :

temperatureF = (20 * 1.8) + 32
temperatureF = 68

Note : if you use library "DallasTemperature.h" with the DS18S20 sensor you will be able to use the built-in converter :

sensors.getTempCByIndex(0); //To get Degrees
sensors.getTempFByIndex(0); //To get Fahrenheit

Have a look : http://arduino-info.wikispaces.com/Brick-Temperature-DS18B20

Regards

Just use the DallasTemperature library to interface to the sensors, then you can call getTempC() or getTempF() to return the temperature in whichever units you want and don't need to deal with the low level I/O stuff yourself at all.