[RISOLTO] DHT22 e scrittura scheda SD

Buonasera!!
Stasera sto cercando di utilizzare il sensore di temperatura ed umidità DHT22 per rilevare, appunto, questi dati.

Collegamenti OK, librerie OK. Sullo schermo LCD vedo tutto senza problemi, ma non riesco a scrivere questi dati sulla scheda SD: sul file si vede la "descrizione" che ho inserito io, ma non i dati rilevati dal sensore.

Vi lascio il codice e il file di testo coi problemi.

#include <DHT.h>
#include <SPI.h>
#include <SD.h>
#include <LiquidCrystal.h>
#include <DS3231.h>

int E   = 3; //LCD PIN "E"
int RS  = 2; //LCD PIN "RS"
int DB7 = 7;  //PIN LCD "DB7"
int DB6 = 6;  //PIN LCD "DB6"
int DB5 = 5;  //PIN LCD "DB5"
int DB4 = 4;  //PIN LCD "DB4"
int CS = 53;

//oggetto di tipo "DS3231" chiamato "orologio"
DS3231 orologio(SDA, SCL);

Time t;

//oggetto di tipo "LiquidCrystal" chiamato "lcd"
LiquidCrystal lcd(RS, E, DB4, DB5, DB6, DB7);

DHT sensore(8, DHT22);

File file;


void setup() {
  orologio.begin();
  lcd.begin(20, 4); //DIMENSIONI SCHERMO LCD
  Serial.begin(9600);
  if (!SD.begin(CS)) {
    lcd.print("ERRORE");
    return;
  } else {
    lcd.print("OK SCHEDA");
  }
  delay (5000);
  lcd.clear();
  float umid = sensore.readHumidity();
  float temp = sensore.readTemperature();
  //int umidINT = umid;

  if (SD.exists("registro.txt")) {
    SD.remove("registro.txt");
  } else {
    file = SD.open("registro.txt", FILE_WRITE);
    file.write(orologio.getDateStr());
    file.write ("   ");
    file.write(orologio.getTimeStr());
    file.write("  ");
    file.write("temperatura: ");
    file.write(sensore.readTemperature());
    file.write("  ");
    file.write("umidità: ");
    file.write(sensore.readHumidity());
    delay(1000);
    file.close();
  }

}

Qualche aiuto?

Grazie mille
Alessandro

REGISTRO.TXT (50 Bytes)

Prova a usare print invece che write

Come ha detto @standard.

Per le frasi non c'e differenza tra print e write. Per i numeri la print di 64 scrive la frase "64" (scrittura a testo) mentre la write scrive un byte di valore 64 (scrittura binaria). Se poi apri il file con un notepad/editor quello legge il file in modalità testo e NON binario. Quindi leggi 64 come carattere ovvero "@"

Grazie mille a tutti! Ho risolto col "print"!!

Alla prossima :slight_smile: