ds18b20 путает индексы

Тема в разделе "Arduino & Shields", создана пользователем UnSstrennen, 21 авг 2018.

Метки:
  1. UnSstrennen

    UnSstrennen Нерд

    Сразу к делу. Схема: [​IMG]
    Функция:
    Код (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 и т.д.)
     
  2. DIYMan

    DIYMan Guest

    Если бы вы прочли спецификацию 1-Wire, то не нашли бы там ничего, гарантирующего неизменный порядок устройств на шине при опросе адресов. Потому что - так сделано, специфика поиска устройств. Хотите, чтобы индексы не менялись - заводите свои привязки уникального адреса устройства к вашему внутреннему индексу.
     
    Последнее редактирование модератором: 22 авг 2018
    parovoZZ, arkadyf, DetSimen и 2 другим нравится это.