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 :
// 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