Obecnie pracuję nad projektem, w którym muszę odczytać numer DHT11 humidity and temperature sensor. Komunikacja między MCU a urządzeniem szeregowym jest dość niska, ale udało mi się otrzymać zmierzone wartości (wilgotność + temperatura) jako tablicę bajtów o długości 4 (piątym bajtem jest suma kontrolna):Jak utworzyć float z dwóch bajtów?
Wartości, które otrzymuję z czujnika DHT11:
- byte[0] = humidity integer part
- byte[1] = humidity decimal part
- byte[2] = temperature integer part
- byte[3] = temperature decimal part
- byte[4] = checksum of the first four bytes
teraz chciałby konwersji byte[0]
i byte[1]
z pływakiem a sama dla temperatury (bajt [2], a bajt [3]). Jaki jest skuteczny sposób osiągnięcia tego na Arduino Mega 2560 w C/C++?
przykład:
byte[0] = 20 and byte[1] = 12 => 20.12 [float]
istnieje duża szansa "dziesiętna" część zawsze wynosi 0 w przypadku DHT11. Niektóre biblioteki w ogóle nie zadają sobie trudu czytania; niektórzy nawet używają wartości 0 (w wilgotności i temperaturze), aby rozróżnić między DHT11 i DHT22. –
Dzięki za szybką odpowiedź. Działa dobrze, chociaż jak wspomniano przez Andreya, część dziesiętna jest rzeczywiście zawsze zerowa. Ale na pewno wykorzystam to na innej części mojego projektu. Dzięki! – salocinx