Uso di OneWire

nid69ita:
Secondo me quell'unico errore ne segnala 2. Il compilatore non capisce nella chiamata che fare, se fai return senza mettere float davanti si crea una situazione ambigua per lui.

Avevo quasi risolto...mi mancava la graffa al posto giusto. Questo ora funziona.
Ora sto cercando di capire come dire se la TempColl è maggiore di 6 gradi rispetto a TempBoll aziona il pin....

Edit: guarda un pò cosa ho fatto ora:

int X=5;

.....

if ((TempCollSol + X) > TempBollAlto){
Serial.print("il collettore è più caldo");
digitalWrite(9, HIGH); //Attivo la circolazione sul serpentino solare
} else if (TempCollSol < TempBollAlto){
Serial.print("il collettore è più freddo");
digitalWrite(9, LOW); //Disattivo la circolazione sul serpentino solare
} else {
digitalWrite(9, LOW); //Disattivo la circolazione sul serpentino solare
}

Edit:...fatto ora funziona :smiley:

Ora devo creare un'altra funzione per il secondo relè. In sostanza devo impostare una variabile che corrisponde a una caldaia e che verrà costantemente confrontata con la caldaia per avere l'acqua calda in ogni istante della giornata :slight_smile:

Edit2: fatto anche questo.

  if (TempBollAlto >= caldaia){
   Serial.print("Il bollitore è completo di ACS"); 
   digitalWrite(8, HIGH); //Attivo la circolazione sul serpentino solare
} else if (TempCollSol <= TempBollAlto){
   Serial.print("Il bollitore non ha l'ACS desiderata"); 
   digitalWrite(8, LOW); //Disattivo la circolazione sul serpentino solare
} else {
   digitalWrite(8, LOW); //Disattivo la circolazione sul serpentino solare
}

Ora il valore caldaia però deve poter essere variato da un potenziometro. Qui per me inizia ad essere difficoltoso.
Ecco il codice che ho fatto io...sarà pieno di errori ma nel serial monitor riesco ad ottenere 34 valori e potrei andare bene:

{
  // letto l'input sul pin analogico 2:
  int sensorValue = analogRead(A2);
  // Converto la lettura analogica (compresa fra 0 - 1023)in un voltaggio tra (0 - 5V):
  float voltage = sensorValue * (5.0 / 1023.0);
  double tempdesiderata = (sensorValue / 30);
    // Stampo sulla porta seriale il valore corrispondente.
  Serial.print("Ecco la temperatura corrispondente: ");
  Serial.println(tempdesiderata);
}

Ora dei valori compresi tra 0.00 e 0.34. Ho diviso per 30 per avere questi 30 valori e qui mi pare sia sbagliato ma non riesco a capire come poter fare.
Poi sto cercando di capire come dover confrontare questi 30 valori e associarli ad un valore di temperatura da stampare poi su lcd.