[dallas_temp] fix ds18s20 temp calc (#6988)

This commit is contained in:
Samuel Sieb 2024-06-26 00:27:07 -07:00 committed by GitHub
parent cc4f1c667e
commit 91766afb64
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -145,10 +145,8 @@ bool DallasTemperatureSensor::check_scratch_pad_() {
float DallasTemperatureSensor::get_temp_c_() { float DallasTemperatureSensor::get_temp_c_() {
int16_t temp = (this->scratch_pad_[1] << 8) | this->scratch_pad_[0]; int16_t temp = (this->scratch_pad_[1] << 8) | this->scratch_pad_[0];
if ((this->address_ & 0xff) == DALLAS_MODEL_DS18S20) { if ((this->address_ & 0xff) == DALLAS_MODEL_DS18S20) {
if (this->scratch_pad_[7] != 0x10) return (temp >> 1) + (this->scratch_pad_[7] - this->scratch_pad_[6]) / float(this->scratch_pad_[7]) - 0.25;
ESP_LOGE(TAG, "unexpected COUNT_PER_C value: %u", this->scratch_pad_[7]); }
temp = ((temp & 0xfff7) << 3) + (0x10 - this->scratch_pad_[6]) - 4;
} else {
switch (this->resolution_) { switch (this->resolution_) {
case 9: case 9:
temp &= 0xfff8; temp &= 0xfff8;
@ -163,7 +161,6 @@ float DallasTemperatureSensor::get_temp_c_() {
default: default:
break; break;
} }
}
return temp / 16.0f; return temp / 16.0f;
} }