Da mein Pseudo-Code etwas unverständlich war, kommt hier noch der eigentliche Sketch:
#include <TSIC.h>
#include <SPI.h>
#include <SD.h>
// instantiate the library, representing the sensor
TSIC Sensor1(5, 2, TSIC_50x);
TSIC Sensor2(6, 2, TSIC_50x);
TSIC Sensor3(7, 2, TSIC_50x);// Signalpin, VCCpin, Sensor Type
//TSIC Sensor1(4); // only Signalpin, VCCpin unused by default
//TSIC Sensor1(4, NO_VCC_PIN, TSIC_50x); // external powering of 50x-Sensor
//TSIC Sensor1(4, 2, TSIC_30x); // Signalpin, VCCpin, Sensor Type
//TSIC Sensor2(5, 2, TSIC_50x); // Signalpin, VCCpin, Sensor Type NOTE: we can use the same VCCpin to power several sensors
uint16_t temperature = 0;
float Temperatur_C1 = 0;
float Temperatur_C2 = 0;
float Temperatur_C3 = 0;
int buttonApin = 9;
int buttonBpin = 10;
int ledPin = 8;
bool status;
char T1char[15];
char T2char[15];
char T3char[15];
int Messzeit = 120;
//Messzeit in Iterationsintervallen
File myFile;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
pinMode(ledPin, OUTPUT);
pinMode(buttonApin, INPUT_PULLUP);
pinMode(buttonBpin, INPUT_PULLUP);
status = false;
Serial.print("Initializing SD card...");
if (!SD.begin(4)) {
Serial.println("initialization failed!");
while (1);
}
Serial.println("initialization done.");
if (SD.exists("example.txt")) {
Serial.println("example.txt exists.");
} else {
Serial.println("example.txt doesn't exist.");
}
Serial.println("Creating example.txt...");
}
void loop() {
if (digitalRead(buttonApin) == LOW) {
digitalWrite(ledPin, HIGH);
status = true;
}
if (status == true) {
myFile = SD.open("example.txt", FILE_WRITE);
myFile.println("Hier beginnt eine neue Messung:");
myFile.println("Zeit [s], Temperaturen T1, T2 [°C]");
for (int i=0; i <= Messzeit; i++) {
if (Sensor1.getTemperature(&temperature)) {
Temperatur_C1 = Sensor1.calc_Celsius(&temperature);
Serial.print("Temperature1: ");
Serial.print(Temperatur_C1, 1);
Serial.println(" °C");
}
if (Sensor2.getTemperature(&temperature)) {
Temperatur_C2 = Sensor2.calc_Celsius(&temperature);
Serial.print("Temperature2: ");
Serial.print(Temperatur_C2, 1);
Serial.println(" °C");
}
if (Sensor3.getTemperature(&temperature)) {
Temperatur_C3 = Sensor3.calc_Celsius(&temperature);
Serial.print("Temperature3: ");
Serial.print(Temperatur_C3, 1);
Serial.println(" °C");
}
Serial.println(i);
myFile.print(i);
myFile.print(" , ");
myFile.print(Temperatur_C1, 1);
myFile.print(" , ");
myFile.print(Temperatur_C2, 1);
myFile.print(" , ");
myFile.println(Temperatur_C3, 1);
Temperatur_C1 = 0;
Temperatur_C2 = 0;
Temperatur_C3 = 0;
if (digitalRead(buttonBpin) == LOW) {
digitalWrite(ledPin, LOW);
i = Messzeit;
}
delay(500); // wait (x) ms
}
myFile.println("Ende der Messung");
myFile.close();
digitalWrite(ledPin, LOW);
status = false;
}
}
Nochmal zum Problem: Wenn möglich, würde ich gerne anstatt der Laufvariable einen Timer starten und jedes Mal, wenn der Timer eine volle Sekunde passiert, die drei Sensoren auslesen und die Daten auf die SD schreiben lassen.