Arduino:
Arbeta med CSV

Hur man gör:

Arduino har inte ett inbyggt bibliotek specifikt för att hantera CSV-filer, men du kan använda SD- och SPI-biblioteken för att komma åt filer på ett SD-kort och sedan tolka eller generera CSV-data med hjälp av grundläggande tekniker för strängmanipulering. När du hanterar mer komplex CSV-manipulering kan det tredjepartsbiblioteket ArduinoCSV användas för enklare tolkning och skrivning.

Läsa CSV-data från ett SD-kort:

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initiering misslyckades!");
    return;
  }
  File dataFile = SD.open("data.csv");
  if (dataFile) {
    while (dataFile.available()) {
      String dataLine = dataFile.readStringUntil('\n');
      Serial.println(dataLine); // Skriver ut CSV-rad
    }
    dataFile.close();
  } else {
    Serial.println("Fel vid öppning av data.csv");
  }
}

void loop() {
  // Används inte i detta exempel
}

Exempelutskrift:

SensorID, Tidsstämpel, Värde
1, 1597840923, 23.5
2, 1597840987, 22.4

Skriva CSV-data till ett SD-kort:

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initiering misslyckades!");
    return;
  }
  File dataFile = SD.open("output.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.println("SensorID, Tidsstämpel, Värde"); // CSV-huvud
    dataFile.println("1, 1597840923, 23.5"); // Exempel på datarad
    dataFile.close();
    Serial.println("Data skrivet");
  } else {
    Serial.println("Fel vid öppning av output.csv");
  }
}

void loop() {
  // Används inte i detta exempel
}

Exempelutskrift:

Data skrivet

Använda ArduinoCSV för tolkning: Om du hanterar komplexa CSV-filer kan ArduinoCSV-biblioteket avsevärt förenkla ansträngningarna för tolkning. Detta exempel antar att du redan har installerat ArduinoCSV-biblioteket.

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Initiering misslyckades!");
    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 varje fält
          if (i < parser.count() - 1) {
            Serial.print(", ");
          }
        }
        Serial.println();
      }
    }
    dataFile.close();
  } else {
    Serial.println("Fel vid öppning av data.csv");
  }
}

void loop() {
  // Används inte i detta exempel
}

Exempelutskrift:

SensorID,  Tidsstämpel,  Värde
1,  1597840923,  23.5
2,  1597840987,  22.4

I dessa exempel, genom att läsa från och skriva till CSV-filer på ett SD-kort, kan Arduinoprojekt enkelt samla in data, lagra konfigurationsinställningar eller utbyta data med andra applikationer i ett universellt tillgängligt format.