collegare 2 DHT11

Salve a tutti, sono nuovo del forum e anche del mondo Arduino. Digiuno di elettronica e informatica.
Nonostante tutto sono riuscito a fare qualcosa con arduino; tipo comandare una ventolina in base ad un sensore di temperatura o cose simili che per me risultano già una vittoria.
Ora vorrei fare il passo successivo, utilizzare un sensore di temperatura e umidità DHT11. Quindi utilizzo di librerie.
Non un solo sensore, ma due.
Qualcuno sa aiutarmi con lo skech?

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni
e a leggere il regolamento: Regolamento

Il cross-posting è vietato. O domandi in italiano in sezione italiana o in inglese (e non in italiano) in sezione internazionale.
http://forum.arduino.cc/index.php?topic=283053.0

Di solito dichiari un oggett/variabile di tipo DHT.
Tu invece devi dichiarare 2 oggetti di tipo DHT (), uno su un pin e l'altro su altro pin.
Mai provato però.

Sì ma come faccio materialmente a distinguere i 2 dht11?

io faccio cosi... cerco in rete => sketch dht11 multiple (multipli in italiano)

dopo seleziono l'argomento piu consono alle mie esigenze => ad esempio questo

dal quale posso prendere come sempio sto sketch

 // Example testing sketch for various DHT humidity/temperature sensors
// Written by ladyada, public domain
// DHT_dual_test
// Demonstrates multiple sensors
// Modified sketch by DIY-SciB.org

///////////  *************** librerie  *****************

#include "DHT.h"
#define DHT1PIN 2  // inserire il numero del pin a cui collegato sensore => in questo caso sostituisci il 2
#define DHT2PIN 3  //  come sopra ma sostituire il 3

// Uncomment whatever type you're using!
#define DHT1TYPE DHT11 // DHT 11
#define DHT2TYPE DHT22 // DHT 22 (AM2302)  /// toglila te usi il dht11
//#define DHTTYPE DHT21 // DHT 21 (AM2301) /// toglila te usi il dht11


// *******************   suggerimenti su come collegare il sensore  ****************
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);

/// **************  Inizio il VOID SETUP

void setup() {
Serial.begin(9600);
Serial.println("DHTxx test!");
dht1.begin();
dht2.begin();
}

/// **************  Inizio il void loop

void loop() {
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
// check if returns are valid, if they are NaN (not a number) then something went wrong!
if (isnan(t1) || isnan(h1)) {
Serial.println("Failed to read from DHT #1");
} else {
Serial.print("Humidity 1: ");
Serial.print(h1);
Serial.print(" %\t");
Serial.print("Temperature 1: ");
Serial.print(t1);
Serial.println(" *C");
}
if (isnan(t2) || isnan(h2)) {
Serial.println("Failed to read from DHT #2");
} else {
Serial.print("Humidity 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperature 2: ");
Serial.print(t2);
Serial.println(" *C");
}
 /// finito di cambiare le varie cose puoi caricarlo e provarlo.......  :sunglasses:

dovrebbe essere tutto chiaro ora....

nid69ita:
Di solito dichiari un oggett/variabile di tipo DHT.
Tu invece devi dichiarare 2 oggetti di tipo DHT (), uno su un pin e l'altro su altro pin.
Mai provato però.

quindi come scrive @db0

DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);

i due oggetti sono dht1 e dht2 della classe DHT. A cui passi due pin diversi, DHT1PIN e DHT2PIN.

Se fai dht1.readTemperature() leggi da un dht mentre se fai dht2.readTemperature() leggi l'altro.

grazie mille, appena ho un minuto lo provo!

allora, ho provato semplicemente a copiare il tuo esempio mettendo nella stessa cartella dello sketch la libreria scaricata da qui
http://playground.arduino.cc/Main/DHTLib

a questo punto mi compare il seguente errore

Arduino:1.5.8 (Windows 7), Scheda:"Arduino Uno"

Build options changed, rebuilding all

DHT_multiplo_prova.ino:18:1: error: 'DHT' does not name a type
DHT_multiplo_prova.ino:19:1: error: 'DHT' does not name a type
DHT_multiplo_prova.ino: In function 'void setup()':
DHT_multiplo_prova.ino:26:1: error: 'dht1' was not declared in this scope
DHT_multiplo_prova.ino:27:1: error: 'dht2' was not declared in this scope
DHT_multiplo_prova.ino: In function 'void loop()':
DHT_multiplo_prova.ino:35:12: error: 'dht1' was not declared in this scope
DHT_multiplo_prova.ino:37:12: error: 'dht2' was not declared in this scope
DHT_multiplo_prova.ino:59:1: error: expected '}' at end of input
Errore durante la compilazione

  Questo report potrebbe essere più ricco
di informazioni con
  "Mostra un output dettagliato durante la compilazione"
  abilitato in "File > Impostazioni"

sai dirmi cosa sbaglio?

state usando due librerie diverse,
quella di @-d0b- presumo che sia questa

ho trovato da questo sito

un esempio con un solo sensore quindi l'ho provato con la la libreria consigliata e funziona.
Ho fatto delle prove per aggiungere un altro sensore e pare che funziona, almeno sulla carta visto che i sensori non mi sono ancora materialmente arrivati

Continuo a non capire perchè l'altro non funziona
forse la libreria?

ecco lo sketch funzionante

/*prova 2 sensori DHT11*/

#include <dht.h>

dht DHT;

#define DHT_A 6
#define DHT_B 7



void setup()
{
  Serial.begin(9600);
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT_LIB_VERSION);
  Serial.println();
  Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
}

void loop()
{
  //----- lettura sensore A ---------------------------------------//
  
  Serial.print("DHT_A, \t");
  int chk1 = DHT.read11(DHT_A);
  switch (chk1)
  {
    case DHTLIB_OK:  
                Serial.print("OK,\t"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksum error,\t"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Time out error,\t"); 
                break;
    default: 
                Serial.print("Unknown error,\t"); 
                break;
  }
  
   // scrivi sul display sensore A
  Serial.print(DHT.humidity, 1);
  Serial.print(",\t");
  Serial.println(DHT.temperature, 1);
  
  //----- lettura sensore B ---------------------------------------//
  
    Serial.print("DHT_B, \t");
  int chk2 = DHT.read11(DHT_B);
  switch (chk2)
  {
    case DHTLIB_OK:  
                Serial.print("OK,\t"); 
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                Serial.print("Checksum error,\t"); 
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                Serial.print("Time out error,\t"); 
                break;
    default: 
                Serial.print("Unknown error,\t"); 
                break;
  }
  // scrivi sul display sensore B
  Serial.print(DHT.humidity, 1);
  Serial.print(",\t");
  Serial.println(DHT.temperature, 1);

  delay(2000);
}
//fine

Brunello:
state usando due librerie diverse,
quella di @-d0b- presumo che sia questa

GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors

ok ora provo con questa libreria l'esempio di @-d0b-

perfetto ora funziona
Mi è parso di capire che questa libreria sia migliore perchè gestisce tutti i tipi di sensore
Grazie!