Sono novizio, problemi con compilazione :(

Ciao a tutti ho un problema :confused: per quanto riguarda la compilazione di uno sketch. Voglio realizzare una mini stazione-meteo con un sensore DHT11(temperatura e umidità) e un sensore di pioggia , tutti i dati saranno visibili su uno smartphone grazie ad un modulo bluetooth hc06, utilizzo una scheda arduino uno. Purtroppo però non essendo molto esperto non riesco risolvere un problema nella compilazione …metterò sketch ed errori qui di seguito.

Sketch programma

#include <DHT.h>
#include <SoftwareSerial.h> 
SoftwareSerial BT(10, 11); 
#define DHT11_PIN 2
#define DHTTYPE DHT11

DHT dht(DHT11_PIN, DHTTYPE);

#define WATER_PIN A0

void setup()
{
  BT.begin(9600);
  BT.println("Arduino Pronto");
  BT.println("\n1. Temperatura");
  BT.println("\n2. Umidità");
  BT.println("\n3. Pioggia");
  BT.println("Inserisci l'opzione: ");
  Serial.begin(9600);
}

float temp = 0, um = 0;
char c;


void loop()
{
  int chk = DHT.read(DHT11_PIN);
  temp = DHT.temperature;
  um = DHT.humidity;

  if (BT.available()) {
    c = (BT.read());

    if (c == '1')
    {
¬† ¬† ¬† BT.println("La temperatura √® (¬įC): ");
      BT.println(temp);
    }

    if (c == '2')
    {
      BT.println("L'umidità è (%): ");
      BT.println(um);
      
    }

    if(c=='3')
    {
       int a=analogRead(WATER_PIN);
      if(a<=800)
        BT.println("PIOVE");

      else
        BT.println("NON PIOVE");
    }

  }
  delay(2000);

}

Errori di compilazione

Arduino:1.6.8 (Windows 7), Scheda:"Arduino/Genuino Uno"

C:\Users\ospite\Desktop\meteo_staz\meteo_staz.ino: In function 'void loop()':

meteo_staz:28: error: expected primary-expression before 'read'

   int chk = DHT read(DHT11_PIN); 

                 ^

meteo_staz:29: error: expected primary-expression before 'temperature'

   temp = DHT temperature;

              ^

meteo_staz:29: error: expected ';' before 'temperature'

meteo_staz:30: error: expected primary-expression before 'humidity'

   um = DHT humidity;

            ^

meteo_staz:30: error: expected ';' before 'humidity'

Pi√Ļ di una libreria trovata per "DHT.h"
Usata: C:\Users\ospite\Documents\Arduino\libraries\DHT_sensor_library-1.3.0
Non usata: C:\Users\ospite\Documents\Arduino\libraries\DHT_sensor_library-1.2.3
Non usata: C:\Users\ospite\Documents\Arduino\libraries\DHT-sensor-library-master
exit status 1
expected primary-expression before 'read'

Questo report potrebbe essere pi√Ļ ricco di informazioni con l'opzione
"Mostra un output dettagliato durante la compilazione"
abilitata in File -> Impostazioni

grazie mille in anticipo ho perso quasi una giornata intera per trovare una soluzione ma nulla…spero possiate darmi una mano.

Ci sono vari errori ...
... prima di tutto ti viene chiaramente indicato che hai installato la libreria in pi√Ļ punti invece che in uno solo. Consiglio, elimina ci√≤ che hai installato a mano e fai SOLO le installazioni da "library manager" del IDE ... cos√¨ sei sicuro che mette UNA sola copia della libreria nel posto giusto.

Poi ... stai sbagliando a chiamare i vari metodi della libreria ...
... quando chiami i vari metodi, devi usare l'istanza e NON la classe (quindi dht e NON DHT) e poi devi separare il metodo con il punto e non con lo spazio, per cui, ad esempio, per chiamare il metodo read() scriverai "dht.read()".

Altro consiglio, nel IDE hai gli esempi per qualsiasi libreria che installi ... prima di usare un qualche cosa studiati bene gli esempi !!!

Guglielmo

Grazie mille per la risposta ... ho provato a seguire i suoi consigli adesso gli errori sembrano diminuiti sopratutto quello delle librerie. Ma non riesco comunque a capire un errore di due righe del programma

 temp = dht.temperature;
  um = dht.humidity;

questi sono gli errori

Arduino:1.6.8 (Windows 7), Scheda:"Arduino/Genuino Uno"

C:\Users\ospite\Desktop\meteo_staz\meteo_staz.ino: In function 'void loop()':

meteo_staz:30: error: 'class DHT' has no member named 'temperature'

   temp = dht.temperature;

              ^

meteo_staz:31: error: 'class DHT' has no member named 'humidity'

   um = dht.humidity;

            ^

Uso la libreria DHT_sensor_library alla versione 1.3.0 nella cartella: C:\Users\ospite\Documents\Arduino\libraries\DHT_sensor_library 
Uso la libreria SoftwareSerial alla versione 1.0 nella cartella: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial 
exit status 1
'class DHT' has no member named 'temperature'

un ultimissima mano e credo di poter risolvere !

quella libreria vuole questa sintassi

Code: [Select]

temp = dht.readTemperature();
 um = dht.readHumidity();

Come ti suggeriva Guglielmo.... studiati gli esempi che ci sono con le librerie

nella libreria che ho installato ci sono due esempi soltanto ... cerco di capire il pi√Ļ possibile, ma come ho detto sono nuovo in questo campo ... ho visto su internet e da varie ricerche ho capito che in quella libreria non vi √® quel determinato tipo di comando. Mi chiedo √® possibile che la libreria sia sbagliata ho provato ad usare diverse versioni... facendo sempre attenzione ad utilizzarne una soltanto, ma nulla stesso errore. ovviamente guardando prima gli esempi

comunque ho risolto grazie mille a tutti...