Сб ноя 30, 2019 14:14:49
float Tc; //температура в градусах цельсия
float Tf; //температура в фаренгейтах
float RH; //влажность в %
uint8_t data[6] = { 0 };
uint16_t St, Srh;
St = (data[0] << 8) | data[1]; //значение температуры, полученное с датчика SHT30
Tc = -45.0 + 175.0 * ((float) St / 65535.0);
Tf = -49.0 + 315.0 * ((float) St / 65535.0);
Srh = (data[3] << 8) | data[4]; //значение влажности, полученное с датчика SHT30
RH = 100.0 * ((float) Srh / 65535.0);
Сб ноя 30, 2019 14:29:06
Сб ноя 30, 2019 14:40:19
Сб ноя 30, 2019 15:44:09
Сб ноя 30, 2019 16:31:56
Сб ноя 30, 2019 16:40:53
Сб ноя 30, 2019 17:02:24
как спросил, так я и ответил.Ellissar писал(а):Я, видимо, объяснил не понятно
делить надо на 65536.Ellissar писал(а):Tc = -45 + 175 * (St / 65535)
Сб ноя 30, 2019 17:27:19
Сб ноя 30, 2019 17:38:35
ПростоНуб писал(а):Tc=-45L<<16+175L*St
Сб ноя 30, 2019 17:54:13
ПростоНуб писал(а):Tc=-45L<<16+175L*St
Сб ноя 30, 2019 19:45:17
КРАМ писал(а):Tc = -45 + 175 * ((uint32_t)St / 65536).
Сб ноя 30, 2019 19:55:42
Сб ноя 30, 2019 20:08:26
uint32 i = ABS32(Tc) + (1u << 15) / 100u; //ABS32() - находит модуль 32-битного числа
uint r0 = i >> 16; //целые градусы
uint r1 = (i & 65535u) * 100u >> 16; //сотые доли градуса
Вс дек 01, 2019 13:34:15
Вс дек 01, 2019 14:05:01
Вс дек 01, 2019 15:51:31
прошу прощение. сейчас посмотрел даташит на эту микру, да, делить надо на 65535.Starichok51 писал(а):делить надо на 65536.
делается это так:Ellissar писал(а):Но хотелось бы увидеть в int32_t значение 2422
Пн дек 02, 2019 07:07:16
Пн дек 02, 2019 15:40:32
Пн дек 02, 2019 16:38:23
Пн дек 02, 2019 17:21:31