fix rounding and precision when setting temperature

This commit is contained in:
Adam Bright 2016-09-26 04:59:42 +00:00
parent bb7032efe8
commit c68eca29cc
1 changed files with 5 additions and 1 deletions

View File

@ -322,7 +322,11 @@ func convertWordToTempC(temp uint16) float64 {
}
func (d *MCP9808) setTemp(reg byte, newTemp float64) error {
return d.Bus.WriteWordToReg(address, reg, uint16(newTemp*16)&0x1fff)
rounder := 2.0
if newTemp < 0 {
rounder = 0.0
}
return d.Bus.WriteWordToReg(address, reg, uint16(newTemp*16+rounder)&0x1ffc)
}
// AmbientTemp reads the current sensor value along with the flags denoting what boundaries the