Помогите с DS18B20

Niklog78
Offline
Зарегистрирован: 07.04.2016
Здравствуйте, вопрос программистам - сейчас у меня программа выдает ошибку если количество датчиков не ровно по условию количеству DS18B20. А как сделать, чтобы показывало конкретный датчик к примеру если отсутствует sensor1 тогда error1()? Функцию ошибки я потом сам пропишу, чтоб на экране показывало, не могу понять как условие написать. Спасибо заранее.
 
// адреса градусников.
DeviceAddress sensor1 = {0x28, 0xFF, 0xA5, 0x3A, 0xA1, 0x15, 0x3, 0x56};
DeviceAddress sensor2 = {0x28, 0xFF, 0x7D, 0x39, 0xA1, 0x15, 0x3, 0xBE};
// ищим датчики на шине, если количество изменилось, останавливаем работу
void sensorTest() {   
ds.begin();
  if (ds.getDeviceCount() != 2) erorr();
}
XOR
Offline
Зарегистрирован: 25.04.2015

ищем все устройства на шине, те кто 0х28 складываем в массив, в цикле опрашиваем найденные датчики и выводим температуру с адресом сенсора.

Niklog78
Offline
Зарегистрирован: 07.04.2016

Температуру, все показывает, единственное, что мне не нравится если отключен один датчик у меня выводится ошибка датчиков, но по условию выше ошибка выводится если количество датчиков не равны 2, и я не знаю какой датчик отключен 1 или второй, как же опросить их так, что бы показало какого датчика нет.

void getTemp() { // читаем температуру и заполняем массив
  ds.requestTemperatures();
  tempSensorKOL = ds.getTempC(sensor1); // немного китайского кода
  tempSensorKUB = ds.getTempC(sensor2);
}
 
Вот температура заполняет масив, и потом выводится на экран
bwn
Offline
Зарегистрирован: 25.08.2014

Не знаю, как это сделать на DT, просто на OneWire для исключения ошибки создал бы массив изначальных адресов в EEPROM, а потом перед каждым чтением температуры делал адресный опрос и сравнение полученных с заданными. Как то так.