Сразу к делу. Схема: Функция: Код (C++): void checkTemp () { printOnDisplay("Update", "temperature data"); temp_sensors.requestTemperatures(); obratka_temp = temp_sensors.getTempCByIndex(0); podacha_temp = temp_sensors.getTempCByIndex(1); floor1_wc_temp = temp_sensors.getTempCByIndex(2); floor1_lr_temp = temp_sensors.getTempCByIndex(3); floor2_temp = temp_sensors.getTempCByIndex(4); Serial.println(); Serial.println("New temperature data"); Serial.print("obratka: "); Serial.println(obratka_temp); Serial.print("podacha: "); Serial.println(podacha_temp); Serial.print("wc: "); Serial.println(floor1_wc_temp); Serial.print("living room: "); Serial.println(floor1_lr_temp); Serial.print("floor 2: "); Serial.println(floor2_temp); } Проблема: путаются датчики. Когда датчиков 3, то все ок, когда их 5, то последние 3 путаются местами при опросе. (то есть 4 датчик читает за 3 и т.д.)
Если бы вы прочли спецификацию 1-Wire, то не нашли бы там ничего, гарантирующего неизменный порядок устройств на шине при опросе адресов. Потому что - так сделано, специфика поиска устройств. Хотите, чтобы индексы не менялись - заводите свои привязки уникального адреса устройства к вашему внутреннему индексу.