mirror of
https://github.com/adafruit/DHT-sensor-library.git
synced 2023-10-23 22:20:38 +03:00
Divisions turned into multiplications
As correctly stated by Mausy5043, the division is quite slow in most microcontrollers, so I have replaced them with multiplications.
This commit is contained in:
parent
5fb1668822
commit
5bc0a5c796
12
DHT.cpp
12
DHT.cpp
@ -46,7 +46,7 @@ float DHT::readTemperature(bool S, bool force) {
|
|||||||
f = data[2] & 0x7F;
|
f = data[2] & 0x7F;
|
||||||
f *= 256;
|
f *= 256;
|
||||||
f += data[3];
|
f += data[3];
|
||||||
f /= 10;
|
f *= 0.1;
|
||||||
if (data[2] & 0x80) {
|
if (data[2] & 0x80) {
|
||||||
f *= -1;
|
f *= -1;
|
||||||
}
|
}
|
||||||
@ -60,11 +60,11 @@ float DHT::readTemperature(bool S, bool force) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
float DHT::convertCtoF(float c) {
|
float DHT::convertCtoF(float c) {
|
||||||
return c * 9 / 5 + 32;
|
return c * 1.8 + 32;
|
||||||
}
|
}
|
||||||
|
|
||||||
float DHT::convertFtoC(float f) {
|
float DHT::convertFtoC(float f) {
|
||||||
return (f - 32) * 5 / 9;
|
return (f - 32) * 0.55555;
|
||||||
}
|
}
|
||||||
|
|
||||||
float DHT::readHumidity(bool force) {
|
float DHT::readHumidity(bool force) {
|
||||||
@ -79,7 +79,7 @@ float DHT::readHumidity(bool force) {
|
|||||||
f = data[0];
|
f = data[0];
|
||||||
f *= 256;
|
f *= 256;
|
||||||
f += data[1];
|
f += data[1];
|
||||||
f /= 10;
|
f *= 0.1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -194,11 +194,11 @@ boolean DHT::read(bool force) {
|
|||||||
_lastresult = false;
|
_lastresult = false;
|
||||||
return _lastresult;
|
return _lastresult;
|
||||||
}
|
}
|
||||||
data[i/8] <<= 1;
|
data[i * 0.125] <<= 1;
|
||||||
// Now compare the low and high cycle times to see if the bit is a 0 or 1.
|
// Now compare the low and high cycle times to see if the bit is a 0 or 1.
|
||||||
if (highCycles > lowCycles) {
|
if (highCycles > lowCycles) {
|
||||||
// High cycles are greater than 50us low cycle count, must be a 1.
|
// High cycles are greater than 50us low cycle count, must be a 1.
|
||||||
data[i/8] |= 1;
|
data[i * 0.125] |= 1;
|
||||||
}
|
}
|
||||||
// Else high cycles are less than (or equal to, a weird case) the 50us low
|
// Else high cycles are less than (or equal to, a weird case) the 50us low
|
||||||
// cycle count so this must be a zero. Nothing needs to be changed in the
|
// cycle count so this must be a zero. Nothing needs to be changed in the
|
||||||
|
Loading…
Reference in New Issue
Block a user