Помогите с DS18B20
- Войдите на сайт для отправки комментариев
Вс, 05/02/2017 - 11:03
Здравствуйте, вопрос программистам - сейчас у меня программа выдает ошибку если количество датчиков не ровно по условию количеству 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();
}
ищем все устройства на шине, те кто 0х28 складываем в массив, в цикле опрашиваем найденные датчики и выводим температуру с адресом сенсора.
Температуру, все показывает, единственное, что мне не нравится если отключен один датчик у меня выводится ошибка датчиков, но по условию выше ошибка выводится если количество датчиков не равны 2, и я не знаю какой датчик отключен 1 или второй, как же опросить их так, что бы показало какого датчика нет.
Не знаю, как это сделать на DT, просто на OneWire для исключения ошибки создал бы массив изначальных адресов в EEPROM, а потом перед каждым чтением температуры делал адресный опрос и сравнение полученных с заданными. Как то так.