Duda con Dallas ds18B20

Buenas, estoy intentando hacer un controlador para mi acuario, y me he encontrado con un problema con la sonda de temperatura. Uso Dallas ds18B20 ,
tengo lectura correcta, pero al acceder a la sonda, me ralentiza el programa un monton

la instrucion que me relantiza es :

TmpSen1.requestTemperatures();

que estaré haciendo mal?

Gracias

la libreria tiene activado por defecto un delay interno debido a que este sensor necesita un tiempo para hacer la medida, el cual es proporcional a la resolucion con la que trabajas.
puedes desactivar ese delay pero tienes que ponerlo en tu codigo, pero si usar el comando delay, ya que estarias en las mismas, ya que delay para todo.

te pongo una muestra del codigo que uso yo

void READ_TEMP_18B20(DeviceAddress deviceAddress)
{
  // method 1 - slower
  
  //Serial.print(sensors.getTempC(deviceAddress));
  //Serial.print(" Temp F: ");
  //Serial.print(sensors.getTempF(deviceAddress)); // Makes a second call to getTempC and then converts to Fahrenheit
//delay (1000);
  // method 2 - faster
 // temp18b20 = sensors.getTempC(deviceAddress);

 if (millis() - lastTempRequest >= delayInMillis) // waited long enough??
  {
    
    temp18b20 = sensors.getTempCByIndex(0);    
    idle = 0; 
        
    // immediately after fetching the temperature we request a new sample 
    // in the async modus
    // for the demo we let the resolution change to show differences
    //TEMPERATURE_PRECISION++;
    //if (TEMPERATURE_PRECISION > 12) TEMPERATURE_PRECISION = 9;
    
    //sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);
    sensors.requestTemperatures(); 
    delayInMillis = 750 / (1 << (12 - TEMPERATURE_PRECISION));
    lastTempRequest = millis(); 
    }
}

el codigo lo saque de no se donde, buscando un poco por ahi.

Muchas gracias por tu respuesta. TEMPERATURE_PRECISION

El motivo de la demora lo entiendo, el codigo que has posteado me funciona a la perfeccion pero con TEMPERATURE_PRECISION=0

es asi como desactiva el delay?
por cierto, ya metidos en gastos y molestias en esta linea :

delayInMillis = 750 / (1 << (12 - TEMPERATURE_PRECISION));

te importaria explicarme que hace el operador "<<" que no lo encuentro explicacion por ningun lado

Un saludo

Me respondo yo mismo, el << lo enconrtre :*

Lamento preguntas tan choras, pero la ignorancia es muy atrevida