Hallo User,
mit meinem Datalogger bin ich dank Hilfe dieses Forums schon weitergekommen. Meine Werte sind auch recht vernünftig und das Speichern auf MicroSD-Karte funktioniert (zumindest phasenweise
wo da das Problem hängt, versuche ich jedoch noch eigenständig zulösen).
Wo ich leider als Laie nicht weiterkomme ist, wie ich meinen maximalen Differenzwert zeitabhängig ausgebe.
Ich habe einen Beschleunigungssensor, der sollte in x und y-Richtung 512 und in z-Richtung 615 ausgeben.
Mit meinen laienhaften Programmierkenntnisse habe ich mir folgenden Code überlegt, der mir jedoch nur den Maximalwert ausgibt (dies ist mein Testcode für den Beschleunigungssensor. Tempsensor und schreiben auf MicroSD habe ich rausgelassen):
int pinX = A0; // X-Achse
int pinY = A1; // Y-Achse
int pinZ = A2; // Z-Achse
int altX = 0;
int altY = 0;
int altZ = 0;
int x;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int altX = 0;
int altY = 0;
int altZ = 0;
for(x=0; x<=20; x++)
{
delay(200);
if (analogRead(pinX) > altX, analogRead(pinY) > altY, analogRead(pinZ) > altZ)
{
altX = analogRead(pinX);
altY = analogRead(pinY);
altZ = analogRead(pinZ);
}
}
Serial.print(altX);
Serial.print(";");
Serial.print(altY);
Serial.print(";");
Serial.print(altZ);
Serial.print(";");
Serial.println();
}
- Frage: Wenn ich jetzt nur den Maximalwert betrachten würde, wäre der Code sinnvoll oder ist dies zu umständlich?
- Frage: Wie kann ich mir die maximale Differenz ausgeben lassen? Schließlich habe ich ja nicht nur einen Maximal- sondern auch je nach Belastung einen Minimalwert.
Warum ich das so mache?
Ich möchte letztlich über mehrere Stunden bis hin zu 1-2 Tagen loggen und daher möchte ich mein Datenvolumen minimieren indem ich nicht alle 200ms einen Wert auf meine SD-Karte speicher, sondern nur alle 5 Sekunden und dies sollte dann eben der Minimal- bzw. Maximalwert dieser Zeitspanne sein