Дураку программисту требуется умный код. Так вот, датчики температуры нужны не сами по себе, а для измерения температуры в конкретной точке. Ну перестанет показывать температуру датчик в баке воды, как вам поможет только что найденный датчик температуры воздуха, или бака в масле. И как датчик определит что он засунут в бак. Только человек может прописать в настройках за что отвечает конкретный датчик или он дублирует другой. И никак иначе
Если вас так плющит, то просто выделите конкретный пин под датчики температуры бака. И уже не важно сколько датчиков там висит. Ответ первого живого датчика и есть температура бака. И все.
Дураку программисту требуется умный код. Так вот, датчики температуры нужны не сами по себе, а для измерения температуры в конкретной точке. Ну перестанет показывать температуру датчик в баке воды, как вам поможет только что найденный датчик температуры воздуха, или бака в масле. И как датчик определит что он засунут в бак. Только человек может прописать в настройках за что отвечает конкретный датчик или он дублирует другой. И никак иначе
Да почему. Зачем Arduino нагружать слежкой на тем где, что и когда случилось с датчиками? Ее задача найти и передать. В маем случаи.
ds.reset_search(); while (ds.search(addr) после этого все ДЦАТЬ датчиков начинают одновременно дружно слать свой адрес в шину и учитывая Открытый Коллктор этих датчиков таки у них это получается :)
это не "вспышке на луне", а озарение получить "правильно" хотя бы 1 адреса двух датчиков верно.
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
перечитайте, я выделил важное... мне вообще не ясно, как у вас получается получить хотя бы 1 адрес верно. Вероятно, из-за проблемы с контактами :))))) когда отваливаются все датчики кроме одного или некоторые заняты процессом конвертирования и просто не могут ответить.
Вы пытаетесь реализовать не реализуемое, по причине противоречия c теорией и физикой построения устройств на данной шине!!!! Если требуется использовать несколько датчиков 18В20 без получения их адреса, объявляют несколько экземпляров шины OneWire на разные пины МК и соответственно шину данных с КАЖДОГО датчика "цепляют" к отдельной ноге МК.
как вам написали выше - занимаетесь ерундой - впихнуть не впихуемое в занятое пространство.
void ConvertTemp()
{
readTempTimeCount = millis();
ds.reset();
ds.write(0xCC);
ds.write(0x44);
}
void readTemp()
{
byte addr[8], data[9], i, j, addrCount = 0;
for(i = 0; i < SIZEOF_SENSORDATA; i++) sensorsData[i] = 0; //инициализация массива
ds.reset_search();
while (ds.search(addr))
{
if ( OneWire::crc8( addr, 7) == addr[7])
{
ds.reset();
ds.select(addr);
ds.write(0xBE);
for (i = 0; i < 9; i++)
{
data[i] = ds.read();
if (i <= 5) sensorsData[5 + sensorsData[4] * 8 + i] = addr[i+1];
}
if (OneWire::crc8(data, 8) == data[8])
{
sensorsData[5 + sensorsData[4] * 8 + 6] = data[0];
sensorsData[5 + sensorsData[4] * 8 + 7] = data[1];
}
sensorsData[4]++; //5-й элемент содержит число датчиков
}
}
Serial.print(F("Sensors "));
printArray(sensorsData, 5 + sensorsData[4] * 8);
sendData();
}
Вот часть кода. Возможно я занимаюсь ерундой.
Но мне надо избавиться от потери датчиков на программном уровне. пропадают они раз в сутки один или два. Если это невозможно. Так и скажите. Буду дальше думать.
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
попроси Клапу запретить пахать Луну.
А вообще, может лучше с соплями в пайке и источниками шумов разобраться чем самому себе мозг выносить? Если у тебя "адреса не доходят", с чего ты взял, что значения будут доходить? Нахрена тогда тебе вообще такие датчики?
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
попроси Клапу запретить пахать Луну.
А вообще, может лучше с соплями в пайке и источниками шумов разобраться чем самому себе мозг выносить? Если у тебя "адреса не доходят", с чего ты взял, что значения будут доходить? Нахрена тогда тебе вообще такие датчики?
дело в том, я вынес себе мозг. доведя до идеала шлейф. приделывая всевозможные фильтра. но потери есть.
я тоже учусь и иногда действительно проще написать свой код, чем разобраться в чужом - в вашем коде я ничего не понял :( просто набор "похожий на код для ардуино"
очень похоже что да. Судя по коду - вы при каждом чтении температуры поиском собираете массив адресов датчиков - но на следующий раз не используете, а снова ищете....- в чем смысл в этой операции?
Если бы массив датчиков собирался.. Там просто нашел очередной датчик - опросил его, дальше ищем следующий. Похоже что основная проблема в недостатке умения писать на си. Иначе проблемы в работе с массивом адресов не было бы.
Предположим датчиков 5 при первом поиске из-за "вспышке на луне" нашлись всего 2 их надо запомнить и произвести повторный поиск датчиков. Если находятся еще новые адреса (остальные 3 из 5), то добавить их к общей куче датчиков и отобразить предположим в мониторе порта. На выходе за два прохода он должен найти все которые есть на линии не зная об их количестве.
" - ты и верно дурак и Андрей пошёл с пескарями (датчиками) домой"
" - видишь там на луне, светит светоидиоТ, вотт ат ниго 1w шину и прЁт"
очень похоже что да. Судя по коду - вы при каждом чтении температуры поиском собираете массив адресов датчиков - но на следующий раз не используете, а снова ищете....- в чем смысл в этой операции?
ТС , тебе нужно просто в еепроме хранить адреса датчиков, а также инфу какой температуре соответствует какой адрес. и сделать возможность р изменять эту информацию из вне. Тогда ты можешь без замены ПО менять датчик и потом просто настраивать замененный датчик из вне. Если тебе так легче. Многим проще это в скетче поправить и перезалить скетч.
А вообще раз у тебя глюки с опросом датчиков, нафиг этот еепром. Сначала без всякого еепрома научиться датчики нормально опрашивать и нах их менять не пойму, они годами работают, че им сделается.
А вообще раз у тебя глюки с опросом датчиков, нафиг этот еепром. Сначала без всякого еепрома научиться датчики нормально опрашивать и нах их менять не пойму, они годами работают, че им сделается.
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
А вообще раз у тебя глюки с опросом датчиков, нафиг этот еепром. Сначала без всякого еепрома научиться датчики нормально опрашивать и нах их менять не пойму, они годами работают, че им сделается.
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
Та ничего не узнаешь. Просто надо понимать что редкие единичные сбои неизбежны. В общем на любой шине, а на 1w подавно. И софт нужно писать (а есть сомнения в твоей способности это делать) учитывая это. контролировать и отрабатывать ошибки. У тя возможность обнаружить проблему тока на уровне 1С, но оттуда нельзя повторить опрос, а в контроллере повторить работу с датчиком можно, но нельзя обнаружить необходимость этого. Архитектура кривая. Так часто бывает когда выбирают простые, но непродуманные решения. И начинают лепить костыли )))
А вообще раз у тебя глюки с опросом датчиков, нафиг этот еепром. Сначала без всякого еепрома научиться датчики нормально опрашивать и нах их менять не пойму, они годами работают, че им сделается.
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
Та ничего не узнаешь. Просто надо понимать что редкие единичные сбои неизбежны...
теперь осталось переписать Datasheet под хотелки Darkherald. Потому-что Darkherald надо так,как он хочет, и нафиг читать ДШ.
Мне нужен более умный поиск.
Дураку программисту требуется умный код. Так вот, датчики температуры нужны не сами по себе, а для измерения температуры в конкретной точке. Ну перестанет показывать температуру датчик в баке воды, как вам поможет только что найденный датчик температуры воздуха, или бака в масле. И как датчик определит что он засунут в бак. Только человек может прописать в настройках за что отвечает конкретный датчик или он дублирует другой. И никак иначе
Если вас так плющит, то просто выделите конкретный пин под датчики температуры бака. И уже не важно сколько датчиков там висит. Ответ первого живого датчика и есть температура бака. И все.
Мне нужен более умный поиск.
Да почему. Зачем Arduino нагружать слежкой на тем где, что и когда случилось с датчиками? Ее задача найти и передать. В маем случаи.
Да по 78 посту. DS18B20 средством OneWire
ds.reset_search(); while (ds.search(addr) после этого все ДЦАТЬ датчиков начинают одновременно дружно слать свой адрес в шину и учитывая Открытый Коллктор этих датчиков таки у них это получается :)
это не "вспышке на луне", а озарение получить "правильно" хотя бы 1 адреса двух датчиков верно.
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
перечитайте, я выделил важное... мне вообще не ясно, как у вас получается получить хотя бы 1 адрес верно. Вероятно, из-за проблемы с контактами :))))) когда отваливаются все датчики кроме одного или некоторые заняты процессом конвертирования и просто не могут ответить.
Вы пытаетесь реализовать не реализуемое, по причине противоречия c теорией и физикой построения устройств на данной шине!!!! Если требуется использовать несколько датчиков 18В20 без получения их адреса, объявляют несколько экземпляров шины OneWire на разные пины МК и соответственно шину данных с КАЖДОГО датчика "цепляют" к отдельной ноге МК.
как вам написали выше - занимаетесь ерундой - впихнуть не впихуемое в занятое пространство.
Спасибо поправил.
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
попроси Клапу запретить пахать Луну.
А вообще, может лучше с соплями в пайке и источниками шумов разобраться чем самому себе мозг выносить? Если у тебя "адреса не доходят", с чего ты взял, что значения будут доходить? Нахрена тогда тебе вообще такие датчики?
Все верно, но из-за вспашке на луне периодически не доходит адрес с датчиков.
попроси Клапу запретить пахать Луну.
А вообще, может лучше с соплями в пайке и источниками шумов разобраться чем самому себе мозг выносить? Если у тебя "адреса не доходят", с чего ты взял, что значения будут доходить? Нахрена тогда тебе вообще такие датчики?
дело в том, я вынес себе мозг. доведя до идеала шлейф. приделывая всевозможные фильтра. но потери есть.
Можно сохранить в память количество датчиков найденных за цикл loop для следующего сравнения ?
Можно сохранить в память количество датчиков найденных за цикл loop для следующего сравнения ?
конечно можно. Можно даже в ЕЕПРОМ записать, чтобы и после выключения питания список не пропал
очень похоже что да. Судя по коду - вы при каждом чтении температуры поиском собираете массив адресов датчиков - но на следующий раз не используете, а снова ищете....- в чем смысл в этой операции?
Если бы массив датчиков собирался.. Там просто нашел очередной датчик - опросил его, дальше ищем следующий. Похоже что основная проблема в недостатке умения писать на си. Иначе проблемы в работе с массивом адресов не было бы.
Мне нужен более умный поиск.
Предположим датчиков 5 при первом поиске из-за "вспышке на луне" нашлись всего 2 их надо запомнить и произвести повторный поиск датчиков. Если находятся еще новые адреса (остальные 3 из 5), то добавить их к общей куче датчиков и отобразить предположим в мониторе порта. На выходе за два прохода он должен найти все которые есть на линии не зная об их количестве.
" - ты и верно дурак и Андрей пошёл с пескарями (датчиками) домой"
" - видишь там на луне, светит светоидиоТ, вотт ат ниго 1w шину и прЁт"
У меня больше слов не нашлосЪ :)))
очень похоже что да. Судя по коду - вы при каждом чтении температуры поиском собираете массив адресов датчиков - но на следующий раз не используете, а снова ищете....- в чем смысл в этой операции?
Смысл в замене датчиков. без замены ПО
Вот объясните мне, тупому, зачем искать датчики, если не знаем в каком месте они меряют? Читаю который день, нихрена понять не могу.((((
Вот объясните мне, тупому, зачем искать датчики, если не знаем в каком месте они меряют? Читаю который день, нихрена понять не могу.((((
далее в 1С они назначаются.
читаем из первой ссылки посты 50, 51, 52 если вообще не понимаете, читаете до просветления пост 52
если не понимаете по русски читаете по второй ссылке
Учёт датчиков в 1C? Что ни день, то новые открытия на этом форуме... И по какому счёту они идут?
Учёт датчиков в 1C? Что ни день, то новые открытия на этом форуме... И по какому счёту они идут?
Запросто. Берёшь дурдуину и двухсторонний скотч и лепишь сверху 1с. Если сею конструкцию перевернуть - будет 1с на дурдуине, иначе - наоборот :)))
ТС , тебе нужно просто в еепроме хранить адреса датчиков, а также инфу какой температуре соответствует какой адрес. и сделать возможность р изменять эту информацию из вне. Тогда ты можешь без замены ПО менять датчик и потом просто настраивать замененный датчик из вне. Если тебе так легче. Многим проще это в скетче поправить и перезалить скетч.
А вообще раз у тебя глюки с опросом датчиков, нафиг этот еепром. Сначала без всякого еепрома научиться датчики нормально опрашивать и нах их менять не пойму, они годами работают, че им сделается.
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
Учёт датчиков в 1C? Что ни день, то новые открытия на этом форуме... И по какому счёту они идут?
Это только по забалансовым можно проводить
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
Та ничего не узнаешь. Просто надо понимать что редкие единичные сбои неизбежны. В общем на любой шине, а на 1w подавно. И софт нужно писать (а есть сомнения в твоей способности это делать) учитывая это. контролировать и отрабатывать ошибки. У тя возможность обнаружить проблему тока на уровне 1С, но оттуда нельзя повторить опрос, а в контроллере повторить работу с датчиком можно, но нельзя обнаружить необходимость этого. Архитектура кривая. Так часто бывает когда выбирают простые, но непродуманные решения. И начинают лепить костыли )))
Подскажите как правильно датчики опрашивать? может что-то новое узнаю.
Та ничего не узнаешь. Просто надо понимать что редкие единичные сбои неизбежны...
теперь осталось переписать Datasheet под хотелки Darkherald. Потому-что Darkherald надо так,как он хочет, и нафиг читать ДШ.
теперь осталось переписать Datasheet под хотелки Darkherald.
переписать даташит - не проблема. Но вот кто обьяснит датчикам. что они теперь работают по новому даташиту ? :)
Придется ваять новую библиотеку