Steve-
Dunno what I had thought I was looking at, but when I un-commented those other lines, I now get correct readings!
This is now what seems to be working:
BTW, going to be in your neck of the woods this Wednesday, 2 days in London, then take a boat out from South Hampton on a cruise through the Baltics.
Thanks for pushing me in the right track!
Regards,
Steve
Code:ReadDS18S20:' Works, Thanks 'Kid' and Steve from the UK....from Forum----------- owout Tsensor,1,[$CC, $44] 'Send Start Temperature Conversion command owout Tsensor,1,[$CC, $BE] 'Send Read Temperature command owin Tsensor,0,[STR dq\9] 'Retrieve all 9 bytes of data RawTemp.Byte0 = dq[0] RawTemp.byte1 = dq[1] if RawTemp.8 = 1 then 'Check if temperature is a negative reading SignC = Negative RawTemp.lowbyte = RawTemp.lowbyte ^ 255 'Invert data else SignC = Positive endif dummy = RawTemp.0 'Store the half degree indicator bit TempC = ((RawTemp.lowbyte) >> 1) * 100 'Divide raw data by 2 to give real temperature TempC = TempC + (dummy * 50) 'Add the half degree is present if SignC = Negative then 'Only proceed if temperature is negative - doesnt work for F, fine for C if TempC => 1770 then SignF = Negative TempF = (TempC + 5000) * 900 TempF = div32 500 TempF = TempF - 12200 return else SignF = Positive TempF = (TempC + 5000) * 900 TempF = div32 500 TempF = 12200 - TempF return endif endif SignF = Positive 'Sign is + TempF = ((TempC * 18) / 10) + 3200 'Convert from C to F return




Bookmarks