Arduino:
Arbeide med CSV

Hvordan:

Arduino har ikke et innebygget bibliotek spesifikt for håndtering av CSV-filer, men du kan bruke SD og SPI bibliotekene for å få tilgang til filer på et SD-kort, og deretter parse eller generere CSV-data ved hjelp av grunnleggende strengmanipuleringsteknikker. Når du håndterer mer kompleks CSV-manipulering, kan det tredjeparts biblioteket ArduinoCSV benyttes for enklere parsing og skriving.

Lese CSV-data fra et SD-kort:

#include <SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initialisering mislyktes!");
    return;
  }
  File dataFile = SD.open("data.csv");
  if (dataFile) {
    while (dataFile.available()) {
      String dataLine = dataFile.readStringUntil('\n');
      Serial.println(dataLine); // Skriver ut CSV-linjen
    }
    dataFile.close();
  } else {
    Serial.println("Feil ved åpning av data.csv");
  }
}

void loop() {
  // Ikke brukt i dette eksempelet
}

Eksempel på utdata:

SensorID, Tidsstempel, Verdi
1, 1597840923, 23.5
2, 1597840987, 22.4

Skrive CSV-data til et SD-kort:

#include <SPI.h>
#include <SD.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initialisering mislyktes!");
    return;
  }
  File dataFile = SD.open("output.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.println("SensorID, Tidsstempel, Verdi"); // CSV-header
    dataFile.println("1, 1597840923, 23.5"); // Eksempel på datarad
    dataFile.close();
    Serial.println("Data skrevet");
  } else {
    Serial.println("Feil ved åpning av output.csv");
  }
}

void loop() {
  // Ikke brukt i dette eksempelet
}

Eksempel på utdata:

Data skrevet

Bruke ArduinoCSV for Parsing: Hvis du håndterer komplekse CSV-filer, kan ArduinoCSV biblioteket i stor grad forenkle parsingarbeidet. Dette eksempelet forutsetter at du allerede har installert ArduinoCSV biblioteket.

#include <SPI.h>
#include <SD.h>
#include <ArduinoCSV.h>

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initialisering mislyktes!");
    return;
  }
  File dataFile = SD.open("data.csv");
  if (dataFile) {
    CSVParser parser;
    while (dataFile.available()) {
      String dataLine = dataFile.readStringUntil('\n');
      if (parser.parseLine(dataLine)) {
        for (int i = 0; i < parser.count(); i++) {
          Serial.print(parser.getField(i)); // Skriver ut hvert felt
          if (i < parser.count() - 1) {
            Serial.print(", ");
          }
        }
        Serial.println();
      }
    }
    dataFile.close();
  } else {
    Serial.println("Feil ved åpning av data.csv");
  }
}

void loop() {
  // Ikke brukt i dette eksempelet
}

Eksempel på utdata:

SensorID,  Tidsstempel,  Verdi
1,  1597840923,  23.5
2,  1597840987,  22.4

I disse eksemplene, ved å lese fra og skrive til CSV-filer på et SD-kort, kan Arduino-prosjekter enkelt samle inn data, lagre konfigurasjonsinnstillinger, eller utveksle data med andre applikasjoner i et universelt tilgjengelig format.