/*
Die Accelerometerdaten werden als Json eine csv geschrieben
und auf einer SD-Karte gespeichert.
*/
#include <SPI.h>
#include <SD.h>
#include <Arduino_LSM6DS3.h>
#include <ArduinoJson.h>
#define CS_PIN 10
float x, y, z;
File myFile;
unsigned long time;
void setup() {
// Die Initialisierung SD-Karte
Serial.begin(9600);
if (!SD.begin(CS_PIN)) {
Serial.println("Card initialization failed!");
while (true);
}
//Initialisierung des Accelerometers
while (!Serial);
Serial.println("Started");
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Accelerometer sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println("Hz");
//Da Test: Löschen alter Daten
if(SD.exists("data.csv")){
SD.remove("data.csv");
}
//Erstellung der Speicherdatei
myFile = SD.open("data.csv", FILE_WRITE);
if (myFile) {
myFile.println("Data");
myFile.close();
} else {
Serial.println("error creating data.csv");
}
}
void loop() {
//Lesen der Accelerometer-Daten + Erstellung eines timestamps
if (IMU.accelerationAvailable()) {
time = millis();
IMU.readAcceleration(x, y, z);
}
//Erstellung des Jsondoc
StaticJsonDocument<256> doc;
doc["time"] = time;
JsonArray data = doc.createNestedArray("acc");
data.add(x);
data.add(y);
data.add(z);
//Json als string in csv schreiben
myFile = SD.open("data.csv", FILE_WRITE);
if (myFile) {
serializeJson(doc,myFile);
myFile.println();
myFile.close();
} else {
Serial.println("error opening Acc.csv");
}
//Nur als Test die Datei komplett auf die Konsole ausgeben
myFile = SD.open("data.csv");
if (myFile) {
while (myFile.available()) {
Serial.write(myFile.read());
}
myFile.close();
} else {
Serial.println("error opening Acc.csv");
}
//Da nur Test delay für weniger Daten
delay(10000);
}