From 97f4d3b540aa877ae77d9cb8aafa1cea33ec3c35 Mon Sep 17 00:00:00 2001 From: Richard Toth Date: Mon, 16 Nov 2015 15:03:29 +0100 Subject: [PATCH 1/2] fixed calculations --- DS1624.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/DS1624.cpp b/DS1624.cpp index e181c5e..9e6904e 100644 --- a/DS1624.cpp +++ b/DS1624.cpp @@ -4,6 +4,7 @@ 26/03/2010 Release 0.1 Written by Federico and Riccardo Galli http://www.sideralis.org + fixed by Richard Toth http://risko.org */ #include "DS1624.h" @@ -31,22 +32,17 @@ void DS1624::start() float DS1624::getTemp() { float temperature = 0; - int tempmsb = 0; - int templsb = 0; - int temp2 = 0; - + int t = 0; + Wire.beginTransmission(this->addr); Wire.write(READ_T); Wire.requestFrom(this->addr, 2); - if (Wire.available()) { - tempmsb = Wire.read(); - } - if (Wire.available()) { - templsb = Wire.read(); - } - temp2 = templsb >> 3; - temperature = (float(tempmsb) + (float(temp2) * 0.03125)); + if (Wire.available()) t = Wire.read() << 8; + if (Wire.available()) t |= Wire.read(); + Wire.endTransmission(); - return temperature; + + t >>= 4; + return (t & 0x800 ? (t & 0x7ff) - 0x800 : t) / 16.0; } From c19f721d6d49677f06f3677a901a49d675428c41 Mon Sep 17 00:00:00 2001 From: Richard Toth Date: Mon, 16 Nov 2015 15:08:07 +0100 Subject: [PATCH 2/2] cast and removed variable --- DS1624.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/DS1624.cpp b/DS1624.cpp index 9e6904e..4894b32 100644 --- a/DS1624.cpp +++ b/DS1624.cpp @@ -31,8 +31,7 @@ void DS1624::start() float DS1624::getTemp() { - float temperature = 0; - int t = 0; + uint16_t t = 0; Wire.beginTransmission(this->addr); Wire.write(READ_T); @@ -44,5 +43,5 @@ float DS1624::getTemp() Wire.endTransmission(); t >>= 4; - return (t & 0x800 ? (t & 0x7ff) - 0x800 : t) / 16.0; + return (float)((t & 0x800 ? (t & 0x7ff) - 0x800 : t) / 16.0); }