ARDUINO Проблема по одновременной работе DS18B20 и DHT11

hellwalker

✩✩✩✩✩✩✩
9 Янв 2020
3
0
Коллеги, доброго времени суток. Собираю проект. Возникла проблема. не могу заставить работать DS18B20 и DHT11.
Накидал простой скетч для теста - получаю результат: DH11 опрашивается, DS18B20 выдает -127, что по факту отсутствие значения.
Подскажите, куда копать?
UPD: Плата - ESP8266. Датчики висят на D1 и D2
UPD2: По отдельности (один из датчиков отключён) работоспосбоны оба.
 

Вложения

Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@hellwalker, а как подключен DS18B20? Я к тому, что должен быть подтягивающий резистор по питанию.
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@hellwalker, прям чудеса. Попробуйте считывать DS18B20 без библиотеки DallasTemperature, она, по сути, не нужна. Вот функция считывания температуры без лишних библиотек.
C++:
#include <OneWire.h>                           //  Подключить библиотеку для работы с датчиком DS18B20 по шине OneWire
OneWire ds(4);                                 //  Создать объект ds для шины OneWire


//                    !!!   ОПРОС ДАТЧИКА ТЕМПЕРАТУРЫ DS18B20    !!!

 float getTempSensor()
  {
    byte reg[2];      // Резервировать 2 байта для считывания регистров ds18b20

    ds.reset();       // Сбросить сенсор DS18b20
    ds.write(0xCC);   // Отправить DS18b20 команду пропустить поиск по адресу, т.к. имеется только одно устройство
    ds.write(0x44);   // Отправить DS18b20 команду измерить температуру.

    delay(1000);      // Пауза для измерения

    ds.reset();          // Снова сбросить сенсор
    ds.write(0xCC);
    ds.write(0xBE);      // Отправить запрос на получение данных регистров со значением температуры
    reg[0] = ds.read();  // Получить младший байт значения температуры
    reg[1] = ds.read();  // Получить старший байт значения температуры
      
    float tDS =  ((reg[1] << 8) | reg[0]) * 0.0625; // Сформировать итоговое значение: сперва "склеить" данные регистров,
    // затем умножить полученное на коэффициент, соответсвующий разрешающей способности (для 12 бит по умолчанию - 0,0625).
    return tDS;
  }
 
Изменено:
  • Лойс +1
Реакции: hellwalker