Код
uint8_t scrp[9]; // в этот массив вы получили 9 байтов (вместе с CRC) из вашего датчика
int16_t* temp = (void*)scrp;
if(scrp[4] & 0x80){ // вот так определяется тип датчика
// DS18S20, DS1820
result = (*temp) * 50L - 25 * (scrp[7] - scrp[6]) / scrp[7];
} else {
// DS18B20, DS1822
result = ((*temp) * 100L) / 16;
}
вот кусочек из моей функции с участком, выдающим температуру в СОТЫХ ДОЛЯХ градуса в виде целого числа. т.е. если температура 21,5 градус, то в result запишется 2150. этому коду ВСЕ РАВНО, из какого датчика получены 9 байт - из DS1820, DS18S20, DS18B20 или DS1822- результат все равно будет правильный. главное, считать в массив scrp 9 байт и проверить достоверность этих данных путем подсчета CRC.
P.S. уважаемые администраторы! сделайте что-нибудь с тегом code - задолбался форматировать! при предварительном просмотре вылезают html-теги параграфов, табуляции отрабатываются не пойми как, в общем, очень неудобно! есть же нормальные плагины для форума с автоматической расцветкой кода, автоматическим форматированием и т.п. удобствами!