Skip to content

Commit cee62d0

Browse files
committed
feat: handle negative values in calculations
1 parent b864c23 commit cee62d0

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

src/dht22.rs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,14 @@ impl<P: InputPin + OutputPin, D: DelayNs> Dht22<P, D> {
4848
let humidity_value = ((humidity_high as u16) << 8) | (humidity_low as u16);
4949
let humidity_percentage = humidity_value as f32 / 10.0;
5050

51-
let temperature_value = ((temperature_high as u16) << 8) | (temperature_low as u16);
52-
let temperatue_percentage = temperature_value as f32 / 10.0;
51+
let temperature_high_clean = temperature_high & 0x7F; // 0x7F = 0111 1111
52+
let temperature_value = ((temperature_high_clean as u16) << 8) | (temperature_low as u16);
53+
let mut temperatue_percentage = temperature_value as f32 / 10.0;
54+
55+
if temperature_high & 0x80 != 0 {
56+
temperatue_percentage = -temperatue_percentage;
57+
}
58+
5359

5460
Ok(SensorReading {
5561
humidity: humidity_percentage,

0 commit comments

Comments
 (0)