Oops, I should have looked closer. Didn't see you're using the extended resolution. That routine was for .5 deg resolution.
OK, so when the temp drops below 32°F, it means that the °C is going negative. And negative values can't be multiplied or divided in PBP. So the "extended Resolution" formula gives the wrong answer.
Same problem with the Fahrenheit conversion, And the LCDOUT statements.
Here's what I think should work...(untested)
After reading the DS1820, change the second half of Update_Pond_Temperature: to this...
Code:
' Calculate Water_Temp in degrees C to 2 decimal places
Sign = Water_Temp.15
Water_Temp = ((ABS(Water_Temp) >> 1) * 100)
if Sign then Water_Temp = -Water_Temp
Water_Temp = Water_Temp - 25 _
+ (((count_per_c - count_remain) * 100) / count_per_c)
IF Temp_Displayed = Celsius then RETURN
'IF the Temp_Displayed = Fahrenheit then Convert C to F before returning
Sign = Water_Temp.15
Water_Temp = (ABS(Water_Temp) */ 461)
if Sign then Water_Temp = -Water_Temp
Water_Temp = Water_Temp + 3200
RETURN
Then change the lcd routine to this...
Code:
Print_To_2nd_Line_Of_Lcd:
LCDOut $fe, $c0
IF Its = Dark THEN
LCDOUT 1
else
LCDOUT 2
endif
LCDOut "H2o = "
if Water_Temp.15 then LCDOut "-"
Water_Temp = ABS(Water_Temp)
LCDOut DEC Water_Temp / 100,".",DEC2 Water_Temp,0
IF Temp_Displayed = Fahrenheit then
LCDOut "F "
else
lcdout "C "
endif
IF Its <> Dark THEN
lcdout DEC Lite_Level
endif
RETURN
You don't need the Temp_Convert include file.
HTH,
Bookmarks