Add readme section about Dht22Type2
This commit is contained in:
parent
ba94973ad9
commit
15ee6d27fa
3 changed files with 28 additions and 3 deletions
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "dht-pio"
|
name = "dht-pio"
|
||||||
version = "0.5.3"
|
version = "0.5.4"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
|
|
15
readme.md
15
readme.md
|
@ -33,7 +33,20 @@ Read data:
|
||||||
let dht_data = dht.read(&mut delay);
|
let dht_data = dht.read(&mut delay);
|
||||||
```
|
```
|
||||||
|
|
||||||
NB: `read` retrun a `Result<DhtResult, DhtError>`.
|
NB: `read` return a `Result<DhtResult, DhtError>`.
|
||||||
|
|
||||||
|
### DHT22 type 2 🧐
|
||||||
|
It seems that there are two versions of DHT22. I haven't found anything really conclusive, but what is certain is that not all DHT22s have the same data format... In one case the format is the same as presented in (almost) all datasheets, i.e. the most significant bit is set to `1` if the number is negative, **but** the binary representation of the absolute temperature value is not changed. For example:
|
||||||
|
- `0000 0000 0110 1001` = 105 or 10.5°C
|
||||||
|
- `1000 0000 0110 1001` = 32873 or -10.5°C
|
||||||
|
|
||||||
|
This is how the `Dht22` struct will "decode" the data coming from the sensor.
|
||||||
|
However, I've come across sensors that don't work like this at all. But in a (ultimately) more logical way. Since the data is represented in [**two's complement**](https://en.wikipedia.org/wiki/Two%27s_complement). In this case, use `Dht22Type2`. For example:
|
||||||
|
- `0000 0000 0110 1001` = 105 i.e. 10.5°C
|
||||||
|
- `1111 1111 1001 0111` = 65431 i.e. -10.5°C
|
||||||
|
|
||||||
|
To simplify, if your sensor is a DHT22 but the values don't seem consistent (negative values), then try "Type 2" (and if nothing really works, open an exit 😉 ).
|
||||||
|
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
### Board
|
### Board
|
||||||
|
|
14
readme_fr.md
14
readme_fr.md
|
@ -36,7 +36,19 @@ Lire les données:
|
||||||
let dht_data = dht.read(&mut delay);
|
let dht_data = dht.read(&mut delay);
|
||||||
```
|
```
|
||||||
|
|
||||||
NB: `read` retrun un `Result<DhtResult, DhtError>`.
|
NB: `read` renvoi un `Result<DhtResult, DhtError>`.
|
||||||
|
|
||||||
|
### DHT22 Type 2 🧐
|
||||||
|
Il semble qu'il existe deux versions de DHT22. Je n'ai rien trouvé de vraiment probant, mais ce qui est certain c'est que tous les DHT22 n'ont pas le même format de donnée... Dans un cas le format est le même que présenté dans (quasi) toutes les datasheet, à savoir le bit de poids fort est à l'état `1` si le nombre est négatif, **mais** la représentation binaire de la valeur absolue de la température n'en est pas changée. Par exemple:
|
||||||
|
- `0000 0000 0110 1001` = 105 soit 10.5°C
|
||||||
|
- `1000 0000 0110 1001` = 32873 soit -10.5°C
|
||||||
|
|
||||||
|
C'est comme cela que la struct `Dht22` va "décoder" les données en provenance du capteur.
|
||||||
|
Or je suis tombé sur des capteurs qui ne fonctionnaient pas du tout comme cela. Mais de manière (au final) plus logique. Puisque les données sont représentées en [**complément à deux**](https://fr.wikipedia.org/wiki/Compl%C3%A9ment_%C3%A0_deux). Dans ce cas il faut utiliser `Dht22Type2`. Par exemple:
|
||||||
|
- `0000 0000 0110 1001` = 105 soit 10.5°C
|
||||||
|
- `1111 1111 1001 0111` = 65431 soit -10.5°C
|
||||||
|
|
||||||
|
Pour simplifier si votre capteur est un DHT22 mais que les valeurs ne semblent pas cohérentes (valeurs négatives) alors essayez le "Type 2" (et si vraiment rien ne marche, ouvrez une issue 😉).
|
||||||
|
|
||||||
## Support
|
## Support
|
||||||
### Board
|
### Board
|
||||||
|
|
Loading…
Reference in a new issue