ds18b20 blocca la trasmissione a Thingspeak

Ciao a tutti ho un problema.

Arduino Yun+ n° 2 sensori dht11 + 1 ds12b20 che dovrebbero registrare su thingspeak i valori.

Il mio problema è questo:

  1. quando uso tutti e tre i sensori sulla seriale stampano i valori ma non registrano su thinspeak nessun valore
  2. quando uso solo in° 2 dht11 questi sulla seriale stampano i valori e registrano su thinspeak i valori
  3. quando uso solo ds12b20 questo sulla seriale stampa i valori e registra su thinspeak i valori

sembra che il

float temperature = getTemp();

generi l' anomalia.

Nel void loop richiamo tempint() ogni minuto

if ( currMin != lastMin ) {
  lastMin = currMin;
  tempint();
}

tempint() acquisisce tutti i valori

void tempint() {


float h = dht.readHumidity(); // attribuisco alla variabile h l'umidita'
ThingSpeak.setField(1,h);

float t = dht.readTemperature(); // attribuisco alla variabile t la temperatura
ThingSpeak.setField(2,t);

float he = dhte.readHumidity(); // attribuisco alla variabile h l'umidita'
ThingSpeak.setField(4,he);

float te = dhte.readTemperature(); // attribuisco alla variabile t la temperatura
ThingSpeak.setField(3,te);

float temperature = getTemp();
ThingSpeak.setField(5,temperature);

ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);

DEBUG_PRINT(" TEMP ACQUA ");
 DEBUG_PRINTLN(temperature); 


////
//// controllo l'avvenuta comunicazione, ed avvio la scrittuta dei dati sulla seriale, ed in caso negativo scrito che è fallita

if (isnan(te) || isnan(he)) {
DEBUG_PRINT(" sensore esterno fallito ");
} else {

DEBUG_PRINT("-> temp est ");
  DEBUG_PRINT(te);
  DEBUG_PRINT(" umidita est ");
 DEBUG_PRINTLN(he);
 }
// controllo l'avvenuta comunicazione, ed avvio la scrittuta dei dati sulla seriale, ed in caso negativo scrito che è fallita
if (isnan(t) || isnan(h)) {
DEBUG_PRINT(" sensore interno fallito ");
} else {

DEBUG_PRINT("-> temp int ");
  DEBUG_PRINT(t);
  DEBUG_PRINT(" umidita int ");
  DEBUG_PRINTLN(h);
 
}
}



/**********************************************************************************/

float getTemp(){
  //returns the temperature from one DS18B20 in DEG Celsius
 
  byte data[12];
  byte addr[8];
 
  if ( !ds.search(addr)) {
      //no more sensors on chain, reset search
      ds.reset_search();
      // return -1000;
return 10;
  }
 
  if ( OneWire::crc8( addr, 7) != addr[7]) {
      Serial.println("CRC is not valid!");
    // return -1000;
return 10;
  }
 
  if ( addr[0] != 0x10 && addr[0] != 0x28) {
      Serial.print("Device is not recognized");
  // return -1000;
return 10;
  }
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44,1); // start conversion, with parasite power on at the end
 delay(750);
  byte present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE); // Read Scratchpad
 
  for (int i = 0; i < 9; i++) { // we need 9 bytes
    data[i] = ds.read();
  }
 
  ds.reset_search();
 
  byte MSB = data[1];
  byte LSB = data[0];
 
  float tempRead = ((MSB << 8) | LSB); //using two's compliment
  float TemperatureSum = tempRead / 16;
 
  return TemperatureSum;
 
}

Come posso risolvere?....
Grazie!