Facebook
From Corrupt Hamster, 2 Years ago, written in C++.
Embed
Download Paste or View Raw
Hits: 209
  1.  
  2. #include    //SD Card Bibliothek
  3. //#include   //Bibliothek zum zugriff auf die SPI Schnittstelle des Arduinos
  4. #include
  5. #include
  6. #include
  7. #include
  8. #include
  9. const int oneWireBus = 2; //Anschluss 2=Bus für Sensoren am Arduino
  10. const int chipSelect = 10;
  11. OneWire oneWire(oneWireBus);
  12. DallasTemperature sensors(&oneWire);
  13. float tempSensor1, tempSensor2, tempSensor3;
  14. uint8_t sensor1[8] = { 0x28, 0xAA, 0x72, 0x77, 0x40, 0x14, 0x01, 0xF5  };//DS18B20: 28 AA 72 77 40 14 01 F5
  15. uint8_t sensor2[8] = { 0x28, 0xCC, 0x32, 0x07, 0xD6, 0x01, 0x3C, 0x6C  };
  16. uint8_t sensor3[8] = { 0x28, 0xCC, 0x32, 0x07, 0xD6, 0x03, 0x3C, 0x6C  };
  17.  
  18.  
  19. File outFile; // Die Datei welche geschrieben bzw. gelesen werden soll
  20. int pinCS = 53; // Chip Select Pin 10 auf dem Arduino Uno
  21. String filename = "temptime.txt"; //Dateiname der zu lesenden bzw. schreibenden Datei
  22. int val;  
  23. int dat = (sensors.getTempCByIndex(0));  
  24. int index = 0;
  25. tmElements_t tm;
  26. void setup() {
  27.   Serial.begin(9600); //Serielle Kommunikation mit 9600 Baud beginnen
  28.   pinMode(pinCS, OUTPUT);
  29.   if (SD.begin()){ //Wenn die SD Card initialisiert werden konnte dann....
  30.     Serial.println("SD Karte konnte erfolgreich geladen werden!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
  31.   } else {
  32.     //Dieser Block wird ausgeführt wenn die SD Card nicht initialisiert werden konnte.
  33.     Serial.println("SD Karte konnte NICHT erfolgreich geladen werden!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
  34.     Serial.println("---Programm wird beendet!"); //Ausgabe des Textes auf der Seriellen Schnittstelle
  35.     return; //vorzeitiges beenden der setup Methode
  36.   }
  37. }
  38.  //Diese Methode wird nur benötigt wenn KEINE Batterie eingelegt ist.
  39.      //void configureDS1307(){
  40.            //Von der Kompilierungszeit das Datum und die Uhrzeit auslesen
  41.      //if (getDate(__DATE__) && getTime(__TIME__)) {
  42.           //Die gelesenen Werte auf die RTC schreiben
  43.      //RTC.write(tm);
  44.      //}
  45. //}
  46. String getTimestamp(){
  47.   tmElements_t tm;
  48.   String timestamp = "-error-"; //Meldung wenn die Zeit nicht gelesen werden konnte.
  49.   if (RTC.read(tm)) { //Lesen der aktuellen Zeit
  50.     timestamp = "";
  51.      timestamp += get2digits(tm.Day); //Tag
  52.     timestamp += ".";
  53.     timestamp += get2digits(tm.Month); //Monat
  54.     timestamp += ".";
  55.     timestamp += get2digits(tmYearToCalendar(tm.Year)); //Jahr
  56.     timestamp += " ";
  57.     timestamp += get2digits(tm.Hour); //Stunde
  58.     timestamp += ":";
  59.     timestamp += get2digits(tm.Minute); //Minute
  60.     timestamp += ":";
  61.     timestamp += get2digits(tm.Second); //Sekunde
  62.   }
  63.   delay(1000);
  64.   Serial.println(timestamp);
  65.  
  66.   Serial.println("Temp Sensor 1: " + String(sensors.getTempCByIndex(0)));
  67.   Serial.println("Temp Sensor 2: " + String(sensors.getTempCByIndex(1)));
  68.   Serial.println("Temp Sensor 3: " + String(sensors.getTempCByIndex(2)));
  69.  
  70.   return timestamp;
  71. }
  72. //Die Funktion liefert einen String Wert zurück welcher bei Zahlen = 0 && number < 10) {
  73.     val += "0";
  74.   }
  75.  
  76.   val += String(number);
  77. return val;
  78. }
  79. //Parsen der Uhrzeit
  80. bool getTime(const char *str)
  81. {
  82.   int Hour, Min, Sec;
  83.   if (sscanf(str, "%d:%d:%d", &Hour, &Min, &Sec) != 3) return false;
  84.   tm.Hour = Hour;
  85.   tm.Minute = Min;
  86.   tm.Second = Sec;
  87.   return true;
  88. }
  89. void writeContent(int temp){
  90.   outFile = SD.open(filename, FILE_WRITE); //Öffnet bzw. erzeugt die Datei im Modus schreibend
  91.   if (outFile) { //Wenn die Datei existiert dann...
  92.     //outFile.print(++index);
  93.     //outFile.print("  ------ ");
  94.     //outFile.print("Temperatur Sensor1,");
  95.     //outFile.print(temp);
  96.     outFile.print(",");
  97.     outFile.print(getTimestamp());  
  98.     outFile.println(" --  ");
  99.   outFile.print(" Sensor 1: " + String(sensors.getTempCByIndex(0)));
  100.   outFile.print(" Sensor 2: " + String(sensors.getTempCByIndex(1)));
  101.   outFile.print(" Sensor 3: " + String(sensors.getTempCByIndex(2)));
  102.   outFile.print(" Datum / Zeit ");
  103.     outFile.close(); //Schließen der Datei (Dieses ist wichtig da sonst beim beenden des Sketches dies Daten verloren gehen können.)
  104.   } else {
  105.     //Dieser Block wird ausgeführt wenn die Datei nicht erzeugt werden konnte.
  106.     Serial.println("Fehler beim öffnen der Datei test.txt"); //Ausgabe des Textes auf der Seriellen Schnittstelle
  107.   }
  108. }
  109. int readTemperatur(){
  110. }
  111. void loop() {
  112. sensors.requestTemperatures();
  113.   tempSensor1 = sensors.getTempC(sensor1); // Gets the Sensor 1 values
  114.   tempSensor2 = sensors.getTempC(sensor2); // Gets the Sensor 2 values
  115.   tempSensor3 = sensors.getTempC(sensor3); // Gets the Sensor 2 values
  116.  
  117.   int tempSensor2 = readTemperatur();
  118.   writeContent(tempSensor2);
  119.   delay(60000); // Zeitintervall der Speicherung
  120. }