s.requestTemperatures(); тормозит работу esp8266

Опрос цифрового датчика температуры тормозит вывод данных с других датчиков на esp8266, стоит закомментировать строку s.requestTemperatures(); как всё работает отлично.

#include <OneWire.h>
#include <DallasTemperature.h>

// Setup a oneWire instance to communicate with a OneWire device
OneWire oneWire(PIN_D1);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature s(&oneWire);
DeviceAddress THERMOMETER = { 0x4, 0x3C, 0x3, 0x57, 0x28, 0xE1, 0x96, 0x3F };

void setup(void) {
   Serial.begin(115200);
   s.begin();
}

void loop() {
  s.requestTemperatures();
  Serial.println(s.getTempC(THERMOMETER));
}

Попробовал сделать по прерыванию:

#include <OneWire.h>
#include <DallasTemperature.h>

const int motionSensor = 10;

// Setup a oneWire instance to communicate with a OneWire device
OneWire oneWire(PIN_D1);
// Pass our oneWire reference to Dallas Temperature sensor 
DallasTemperature s(&oneWire);
DeviceAddress THERMOMETER = { 0x4, 0x3C, 0x3, 0x57, 0x28, 0xE1, 0x96, 0x3F };

void setup(void) {
   Serial.begin(115200);

  // PIR Motion Sensor mode INPUT_PULLUP
  pinMode(motionSensor, INPUT_PULLUP);
  // Set motionSensor pin as interrupt, assign interrupt function and set RISING mode
  attachInterrupt(digitalPinToInterrupt(motionSensor), detectsMovement, RISING);
  
 s.begin();
}

ICACHE_RAM_ATTR void detectsMovement() {
  s.requestTemperatures();
  Serial.println(s.getTempC(THERMOMETER));
}

void loop() {}

Не помогло, при срабатывании прерывания всё равно подтормаживает вывод данных с других датчиков.

Есть ли на esp8266 возможность запустить опрос датчика температуры параллельно функции loop?

Зачем вам запрос данных со ВСЕХ датчиков на шине ???
requestTemperaturesByAddress запросите с нужного !!!

Читайте про функцию waitForConversion библиотеки.

Komandir, KindMan Спасибо Вам БОЛЬШОЕ обоим, то что нужно!

С DS18B20 нужно разбить получение температуры на 2 этапа:

  1. ждем завершение таймаута получения температуы (например 1 минута) запускаем групповое конвертирование значения температуры всех датчиков на шине 1Wire. Запускаем таймер чтения температуры с шины (я запускаю на 1 секунду). Запускаем 1 минутный таймер получения температуры.
  2. ждем завершения таймаута чтения и читаем датчики температуры с шины 1Wire.

Так никаких задержек не будет, а в функции requestTemperatures() есть задержка на время преобразования в 750мс