[RISOLTO] Come passare un valore ad una variabile

Ciao a tutti,

sono nuovo del mondo Arduino e sto ancora imparando... Come progetto ho il classico progettino che ha un po' di sensori che scrivono in un logfile.

Di seguito il codice che ho scritto assemblato :smiley: :

// necessari per il datalogging
#include <SPI.h>
#include <SD.h>

/*

Importante la resistenza da 1k tra il fotoresistore !!!!

*/

#include <dht11.h>
dht11 DHT;
#define DHT11_PIN 6


// per il datalogging
const int chipSelect = 4;


//variabili per la luce
int sensore_lux = 0 ;
 

void setup() {

  // put your setup code here, to run once:
  Serial.begin(9600);

  //solo durante l'inizializzazione per termometro
  Serial.println("DHT TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
  
//  pinMode (A0, INPUT);  //lettura temperatura
  pinMode (A1, INPUT);  //lettura luce
  
  
  // relativo al datalogging
  Serial.print("Initializing SD card...");
  // see if the card is present and can be initialized:
  if (!SD.begin(chipSelect)) {
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
  }
  Serial.println("card initialized.");
  
  
}

 
void loop() {
    Serial.println("Type,\t\tstatus,\tHumidity (%),\tTemperature (C),\tLux");
    //faccio cilare il tutto ogni 10 volte in modo che possa ripetersi
    for (int i=0; i<=10; i++){


        Serial.print(i);
        Serial.print(" DHT11, \t");
        int chk = DHT.read(DHT11_PIN);    // READ DATA
        switch (chk){
            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;
  }
    // DISPLAT DATA
    Serial.print(DHT.humidity,1);
    Serial.print(",\t\t");
    Serial.print(DHT.temperature,1);
    Serial.print(",\t\t\t");    
    // Codice di rilevazione luce
    sensore_lux = analogRead (A1);  //devo capire perche' mi scrive a monitor il valore?
    Serial.println(sensore_lux);
  
    // parte relativa al dataloggin 
    // make a string for assembling the data to log:
    
    String dataString = "";

    // open the file. note that only one file can be open at a time,
    // so you have to close this one before opening another.
    File dataFile = SD.open("datalog.txt", FILE_WRITE);
    dataString += String(DHT.humidity,1);
    dataString += (";");
    dataString += String(DHT.temperature,1);
    dataString += (";");
    dataString += String (sensore_lux);
  
    // if the file is available, write to it:
    if (dataFile) {
        dataFile.println(dataString);
        dataFile.close();
        // print to the serial port too:
        Serial.println(dataString);
    }
    // if the file isn't open, pop up an error:
    else {
        Serial.println("error opening datalog.txt");
    }

  delay (10000); // faccio aspettare 10 secondi
	} 

}

Con questo codice pero' nel file di log non riesco a passare i valori di DHT.humidity e DHT.temperature che rimangono vuoti, mentre sensore_lux viene correttamente valorizzato.

Mi aiutate a capire dove sbaglio?

grazie

...
    dataString += String(DHT.humidity,1);
    dataString += (";");
    dataString += String(DHT.temperature,1);
...

Se non ricordo male, DHT.humidity e DHT.temperature sono interi, quindi non vogliono il numero di decimali

cyberhs:

...

dataString += String(DHT.humidity,1);
    dataString += (";");
    dataString += String(DHT.temperature,1);
...




Se non ricordo male, DHT.humidity e DHT.temperature sono interi, quindi non vogliono il numero di decimali

Preso in pieno!
tutto funziona correttamente modificando il codice in

...
    dataString += String(DHT.humidity);
    dataString += (";");
    dataString += String(DHT.temperature);
...

grazie tante!