Hallo,
ich habe mir einen Datenlogger gebastelt mit welchen ich einen Temperatursensor (DHT11) auslese und die Temperatur logge. Leider wird die Temperatur mit ein einem Punkt statt einem Komma gespeichert. Zum Beispiel 22.10 statt 22,10 Celsius.
Ich hatte in die DHT Bibliothek geguckt ob man es dort ändern kann aber leider nicht. Auch geht es wohl in meinem Programm nicht.
Hat jemand eine Idee wie ich dies ändern könnte?
#include <SPI.h> //for the SD card module
#include <SD.h> // for the SD card
#include <DHT.h> // for the DHT sensor
#include <RTClib.h> // for the RTC
#define DHTPIN 7
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
const int chipSelect = 5;
File myFile;
RTC_DS1307 rtc;
void setup() {
dht.begin();
Serial.begin(9600);
while(!Serial);
if(!rtc.begin()) {
Serial.println("Couldn't find RTC");
while (1);
}
else {
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
}
if(! rtc.isrunning()) {
Serial.println("RTC is NOT running!");
}
Serial.print("Initializing SD card...");
if(!SD.begin(chipSelect)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
myFile=SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
Serial.println("File opened ok");
myFile.println("Date,Time,Temperature ºC");
}
myFile.close();
}
void loggingTime() {
DateTime now = rtc.now();
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
myFile.print(now.hour(), DEC);
myFile.print(':');
myFile.print(now.minute(), DEC);
myFile.print(':');
myFile.print(now.second(), DEC);
myFile.print("|");
}
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.println(now.second(), DEC);
myFile.close();
delay(1000);
}
void loggingTemperature() {
float t = dht.readTemperature();
if (isnan(t) ) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" °C");
myFile = SD.open("DATA.txt", FILE_WRITE);
if (myFile) {
Serial.println("open with success");
myFile.print(t);
myFile.println("");
}
myFile.close();
}
void loop() {
loggingTime();
loggingTemperature();
delay(10000);
}