кхе кхе, с отрицательными значениями если работать будет может кто еще поможет)))
и ваще они там есть ?))) но вот набросок за основу
int16_t readDS18B20(byte *addr) {
uint8_t data[9];
ds.reset();
ds.select(addr);
ds.write(0xBE);
for (uint8_t i = 0; i < 9; i++) {
data[i] = ds.read();
}
if (dallas_crc8(data, 8) != data[8]) {
return 0x7FFF; // Ошибка CRC
}
int16_t raw = (int16_t)((data[1] << 8) | data[0]);
// Правильная формула для int16_t (работает с отрицательными):
return (raw * 5) / 8; // Десятые доли °C
}