Hallo
bin gerade dabei mir einen Datenlogger zu basteln. Bis jetzt lief auch alles ohne probleme.
Und jetzt möchte ich eine sd Karte einbinden, um die Werte mitzuschreiben und da ist mein Problem. Ich
hab derzeit keine Ahnung wie ich das lösen sollte.
Wäre nett wenn mir von euch einer helfen könnte. Ach ja, ich sollte vielleicht noch erwähnen, dass ich ein absoluter Programmieranfänger bin. Wenn ich den Code sehe, weiß ich was er macht, aber selber dann so umschreiben, dass es funktioniert, schaff ich nicht.
Was das Teil können sollte.
Ich habe zwei Temperatursensoren, einen für die Bodentemperatur und einen für die Lufttemperatur. Die beiden Temperaturen sollen mit einem Zeitstempel versehen auf der SD-Karte gespeichert werden, damit ich den Temperaturverlauf nachvollziehen kann, wenn ich die Daten auslese.
#include <SPI.h>
#include<SD.h>
/*** Deklariere Konstanten und Variablen für diesen Sketch /
int SELECTED_CHIP = 4;
int count = 0;
const unsigned int BAUDRATE = 9600; // Serieller Monitor Baud Rate
const byte TEMPSIGNALBODEN = A0; // Sensorsignal an Analogpin A0
// const byte TEMPSIGNALLUFT = A1; // Sensorsignal an Analogpin A1
//
/+/
void setup() {
/* Starte den seriellen Monitor und warte jetzt auf Daten zur Ausgabe /
Serial.begin(9600); // Starte seriellen Monitor
if (SD.begin(SELECTED_CHIP)) {
Serial.println("SD-Card initialized.");
} else {
Serial.println("SD-Card failed or is missing");
}
} // Ende der Setup Routine (Einmalig)
//
/***/
void loop() {
int valueBoden = analogRead(TEMPSIGNALBODEN); // LM35 Sensorwert einlesen
// int valueLuft = analogRead(TEMPSIGNALLUFT); // LM35 Sensorwert einlesen
delay(10000); // 10s Verzögerung zwecks Anzeige
/**************************Ohne Offset Bodentemperatur ********************************/
float celsiusBoden = (valueBoden * 5000.0) / 1024.0 /10; // Berechne Messung °C
float celsiusLuft = (valueLuft * 5000.0) / 1024.0 / 10; // Berechne Messung °C
String temp = celsiusBoden;
writeToSD(temp);
count = count + 1;
Serial.print("Temperatur_Boden: ");
Serial.print(celsiusBoden);
Serial.println(" Celsius");
Serial.print("Temperatur_Luft: ");
float celsiusLuft = milliVoltLuft;
Serial.print(celsiusLuft);
Serial.println(" Celsius");
Serial.println();
}
void wirteTo(String line)
{
File dataFile = SD.open("celsiusBoden" , FILE_WRITE);
if (dataFile)
dataFile.print(line);
dataFile.close();
Serial.print("Error opening datafile");
}
//
//
/*** Optionale Funktion: ***/
//
//