sonda DS18B20 su 2 pin diversi

ciao a tutti, io volevo collegare 2 sonde temperatura su 2pin diversi,
fino a qui ci sono arrivato.

ma oltre non so come correggere il codice
come chiamo il secondo sensore per ottenere il lì valore?

#include <OneWire.h>
#include <DallasTemperature.h>
// Il terminale data del sensore è connesso
// alla porta 2 e 3di Arduino
#define ONE_WIRE_BUS_IN 2
#define ONE_WIRE_BUS_OUT 3

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWire(ONE_WIRE_BUS_IN);
OneWire oneWire(ONE_WIRE_BUS_OUT);

// Passaggio oneWire reference alla Dallas Temperature. 
DallasTemperature sensors(&oneWire);


void setup(void)
{
  // Start up the library
  sensors.begin();
  Serial.begin(9600);
}

void loop(void)
{ 
sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura

  Serial.println("T1  ");
 
  Serial.println(sensors.getTempCByIndex(0)); 
   Serial.print (" C"); 
  
sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura

  Serial.println("T2  ");
 
  Serial.println(sensors.getTempCByIndex(0)); \\come chiamp il secondo sensore
   Serial.println (" C");

Perché li vuoi collegare su 2 pin diversi?

grazie della risposta per farlo piu’ semplice visto che ho pin liberi mi evito
di cercare il loro indirizzo e anche per un eventuale cambio senza toccare il programma

Prova cosi:

#include <OneWire.h>
#include <DallasTemperature.h>
// Il terminale data del sensore è connesso
// alla porta 2 e 3di Arduino
#define ONE_WIRE_BUS_IN 2
#define ONE_WIRE_BUS_OUT 3

// Imposta la comunicazione oneWire per comunicare
// con un dispositivo compatibile
OneWire oneWireA(ONE_WIRE_BUS_IN);
OneWire oneWireB(ONE_WIRE_BUS_OUT);

// Passaggio oneWire reference alla Dallas Temperature.
DallasTemperature sensorsA(&oneWireA);
DallasTemperature sensorsB(&oneWireB);

per stampare cosi va bene il comando?

Serial.println("T1  ");
 
  Serial.println(sensors.getTempCByIndex(0));
   Serial.print (" C");
 
sensors.requestTemperatures(); // Invia il comando di lettura delle temperatura

  Serial.println("T2  ");
 
  Serial.println(sensors.getTempCByIndex(1)); \\come chiamp il secondo sensore
   Serial.println (" C");

ho trovato questo, puo’ funzionare ?

#include <OneWire.h>
#include <LiquidCrystal.h>


const byte PIN_SONDA1 = 2;
const byte PIN_SONDA2 = 3;
const byte PIN_SONDA3 = 4;

OneWire ds1(PIN_SONDA1);
OneWire ds2(PIN_SONDA2);
OneWire ds3(PIN_SONDA3);

LiquidCrystal lcd(8,9,4,5,6,7);

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

  lcd.begin(16, 2);

  lcd.setCursor(0,0);
  lcd.print("  DS18B20 LCD  ");


  delay( 3000 );
}

void loop(void) {
  float 1temperature = ds1.read();
  float 2temperature = ds2.read();
  float 3temperature = ds3.read();
 
  Serial.println(1temperature);
  Serial.println(2temperature);
  Serial.println(3temperature);

  lcd.clear();
  lcd.setCursor(0,0);
  lcd.print("Temperatura:   ");
  lcd.setCursor(0,1);
  lcd.print(1temperature);

  delay(1000); //just here to slow down the output so it is easier to read

}

per stampare cosi va bene il comando?

Non funziona quello che ti avevo messo?

ho trovato questo, puo' funzionare ?

Provando puoi risponderti da solo! :wink:
Non era più semplice usare la libreria Dallas per leggere le temperature?

ho cercato per la libreria dallas ed ho trovato questo , ora non ho 2 sonde ma domani se mi arrivano lo provo

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

#define ONE_WIRE_BUS_1 2
#define ONE_WIRE_BUS_2 4

OneWire oneWire_in(ONE_WIRE_BUS_1);
OneWire oneWire_out(ONE_WIRE_BUS_2);

DallasTemperature sensor_inhouse(&oneWire_in);
DallasTemperature sensor_outhouse(&oneWire_out);

void setup(void)
{
    Serial.begin(9600);
    Serial.println("Dallas Temperature Control Library Demo - TwoPin_DS18B20");

    sensor_inhouse.begin();
    sensor_outhouse.begin();
}

void loop(void)
{
    Serial.print("Requesting temperatures...");
    sensor_inhouse.requestTemperatures();
    sensor_outhouse.requestTemperatures();
    Serial.println(" done");

    Serial.print("Inhouse: ");
    Serial.println(sensor_inhouse.getTempCByIndex(0));

    Serial.print("Outhouse: ");
    Serial.println(sensor_outhouse.getTempCByIndex(0));
}