Salve a tutti, scusate per il titolo bizzarro, ma ritengo che sia questo il mio problema: un'incompatibilità hardware tra questi tre componenti. Se avete suggerimenti su come procedere ve ne sarei grato.
Ho collegato a un Wemos D1, un sensore DHT22 e un lettore di microSD della catalex. La memoria microSD è nuova ed è funzionante. Alimento i sensori con il pin a 5V della board. Posto adesso un codice di esempio che ho creato per analizzare questo problema. Letti i dati del sensore, li stampo su un file.txt.
#include <DHT.h>
#include <SD.h>
#include <SPI.h>
#define SD_CS D4
#define DHTPIN D5
#define DHTTYPE 22
DHT dht(DHTPIN, DHTTYPE);
File local_file;
File project_file;
float t = 0;
float h = 0;
const char* name_device_file ="file.txt";
String get_upload ="";
void setup() {
Serial.begin(9600);
Serial.print("MicroSD...");
if (!SD.begin(SD_CS)) {
Serial.println("not found!");
}
}
void loop() {
t = dht.readTemperature();
h = dht.readHumidity();
String my_string = "Temperatura: ";
my_string += t;
my_string +=" - Umidità: ";
my_string += h;
project_file = SD.open(name_device_file, FILE_WRITE);
if (project_file) {
project_file.println(my_string);
Serial.println(my_string);
project_file.close();
} else {
Serial.println("errore: il file non si apre");
}
delay(2000);
}
Il software la prima volta mi dice che il file non si apre. Ravviando la board, il programma non segnala più errore e inizia a scrivere su monitor i valori letti. Andando poi a vedere cosa ha scritto nella memoria microSD si può notare che è stata scritta solo la prima riga e nient'altro:
Temperatura: nan - Umidità: nan
Commentando " t = dht.readTemperature(); e h = dht.readHumidity(); " la scheda microSD torna a lavorare correttamente. Suggerimenti?