#include //SD Card Bibliothek
//#include //Bibliothek zum zugriff auf die SPI Schnittstelle des Arduinos
#include
#include
#include
#include
#include
const int oneWireBus = 2; //Anschluss 2=Bus für Sensoren am Arduino
const int chipSelect = 10;
OneWire oneWire(oneWireBus);
DallasTemperature sensors(&oneWire);
float tempSensor1, tempSensor2, tempSensor3;
uint8_t sensor1[8] = { 0x28, 0xAA, 0x72, 0x77, 0x40, 0x14, 0x01, 0xF5 };//DS18B20: 28 AA 72 77 40 14 01 F5
uint8_t sensor2[8] = { 0x28, 0xCC, 0x32, 0x07, 0xD6, 0x01, 0x3C, 0x6C };
uint8_t sensor3[8] = { 0x28, 0xCC, 0x32, 0x07, 0xD6, 0x03, 0x3C, 0x6C };
File outFile; // Die Datei welche geschrieben bzw. gelesen werden soll
int pinCS = 53; // Chip Select Pin 10 auf dem Arduino Uno
String filename = "temptime.txt"; //Dateiname der zu lesenden bzw. schreibenden Datei
int val;
int dat = (sensors.getTempCByIndex(0));
int index = 0;
tmElements_t tm;
void setup() {
Serial.begin(9600); //Serielle Kommunikation mit 9600 Baud beginnen
pinMode(pinCS, OUTPUT);
if (SD.begin()){ //Wenn die SD Card initialisiert werden konnte dann....
Serial.println("SD Karte konnte erfolgreich geladen werden!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
} else {
//Dieser Block wird ausgeführt wenn die SD Card nicht initialisiert werden konnte.
Serial.println("SD Karte konnte NICHT erfolgreich geladen werden!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
Serial.println("---Programm wird beendet!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
return; //vorzeitiges beenden der setup Methode
}
}
//Diese Methode wird nur benötigt wenn KEINE Batterie eingelegt ist.
//void configureDS1307(){
//Von der Kompilierungszeit das Datum und die Uhrzeit auslesen
//if (getDate(__DATE__) && getTime(__TIME__)) {
//Die gelesenen Werte auf die RTC schreiben
//RTC.write(tm);
//}
//}
String getTimestamp(){
tmElements_t tm;
String timestamp = "-error-"; //Meldung wenn die Zeit nicht gelesen werden konnte.
if (RTC.read(tm)) { //Lesen der aktuellen Zeit
timestamp = "";
timestamp += get2digits(tm.Day); //Tag
timestamp += ".";
timestamp += get2digits(tm.Month); //Monat
timestamp += ".";
timestamp += get2digits(tmYearToCalendar(tm.Year)); //Jahr
timestamp += " ";
timestamp += get2digits(tm.Hour); //Stunde
timestamp += ":";
timestamp += get2digits(tm.Minute); //Minute
timestamp += ":";
timestamp += get2digits(tm.Second); //Sekunde
}
delay(1000);
Serial.println(timestamp);
Serial.println("Temp Sensor 1: " + String(sensors.getTempCByIndex(0)));
Serial.println("Temp Sensor 2: " + String(sensors.getTempCByIndex(1)));
Serial.println("Temp Sensor 3: " + String(sensors.getTempCByIndex(2)));
return timestamp;
}
//Die Funktion liefert einen String Wert zurück welcher bei Zahlen = 0 && number < 10) {
val += "0";
}
val += String(number);
return val;
}
//Parsen der Uhrzeit
bool getTime(const char *str)
{
int Hour, Min, Sec;
if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
tm.Hour = Hour;
tm.Minute = Min;
tm.Second = Sec;
return true;
}
void writeContent(int temp){
outFile = SD.open(filename, FILE_WRITE); //Öffnet bzw. erzeugt die Datei im Modus schreibend
if (outFile) { //Wenn die Datei existiert dann...
//outFile.print(++index);
//outFile.print(" ------ ");
//outFile.print("Temperatur Sensor1,");
//outFile.print(temp);
outFile.print(",");
outFile.print(getTimestamp());
outFile.println(" -- ");
outFile.print(" Sensor 1: " + String(sensors.getTempCByIndex(0)));
outFile.print(" Sensor 2: " + String(sensors.getTempCByIndex(1)));
outFile.print(" Sensor 3: " + String(sensors.getTempCByIndex(2)));
outFile.print(" Datum / Zeit ");
outFile.close(); //Schließen der Datei (Dieses ist wichtig da sonst beim beenden des Sketches dies Daten verloren gehen können.)
} else {
//Dieser Block wird ausgeführt wenn die Datei nicht erzeugt werden konnte.
Serial.println("Fehler beim öffnen der Datei test.txt"); //Ausgabe des Textes auf der Seriellen Schnittstelle
}
}
int readTemperatur(){
}
void loop() {
sensors.requestTemperatures();
tempSensor1 = sensors.getTempC(sensor1); // Gets the Sensor 1 values
tempSensor2 = sensors.getTempC(sensor2); // Gets the Sensor 2 values
tempSensor3 = sensors.getTempC(sensor3); // Gets the Sensor 2 values
int tempSensor2 = readTemperatur();
writeContent(tempSensor2);
delay(60000); // Zeitintervall der Speicherung
}