Arduino:
Trabalhando com CSV

Como fazer:

O Arduino não possui uma biblioteca integrada especificamente para manipulação de arquivos CSV, mas você pode usar as bibliotecas SD e SPI para acessar arquivos em um cartão SD e então analisar ou gerar dados CSV usando técnicas básicas de manipulação de strings. Ao lidar com manipulações mais complexas de CSV, a biblioteca de terceiros ArduinoCSV pode ser utilizada para facilitar a análise e escrita.

Lendo Dados CSV de um Cartão SD:

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Inicialização falhou!");
    return;
  }
  File dataFile = SD.open("data.csv");
  if (dataFile) {
    while (dataFile.available()) {
      String dataLine = dataFile.readStringUntil('\n');
      Serial.println(dataLine); // Imprime a linha CSV
    }
    dataFile.close();
  } else {
    Serial.println("Erro ao abrir data.csv");
  }
}

void loop() {
  // Não utilizado neste exemplo
}

Saída de Exemplo:

SensorID, Timestamp, Value
1, 1597840923, 23.5
2, 1597840987, 22.4

Escrevendo Dados CSV em um Cartão SD:

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Inicialização falhou!");
    return;
  }
  File dataFile = SD.open("output.csv", FILE_WRITE);
  if (dataFile) {
    dataFile.println("SensorID, Timestamp, Value"); // Cabeçalho CSV
    dataFile.println("1, 1597840923, 23.5"); // Linha de exemplo de dados
    dataFile.close();
    Serial.println("Dados escritos");
  } else {
    Serial.println("Erro ao abrir output.csv");
  }
}

void loop() {
  // Não utilizado neste exemplo
}

Saída de Exemplo:

Dados escritos

Usando ArduinoCSV para Análise: Se lidar com arquivos CSV complexos, a biblioteca ArduinoCSV pode simplificar significativamente os esforços de análise. Este exemplo presume que você já instalou a biblioteca ArduinoCSV.

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

void setup() {
  Serial.begin(9600);
  if (!SD.begin(4)) {
    Serial.println("Inicialização falhou!");
    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)); // Imprime cada campo
          if (i < parser.count() - 1) {
            Serial.print(", ");
          }
        }
        Serial.println();
      }
    }
    dataFile.close();
  } else {
    Serial.println("Erro ao abrir data.csv");
  }
}

void loop() {
  // Não utilizado neste exemplo
}

Saída de Exemplo:

SensorID,  Timestamp,  Value
1,  1597840923,  23.5
2,  1597840987,  22.4

Nesses exemplos, ao ler e escrever em arquivos CSV em um cartão SD, projetos Arduino podem facilmente coletar dados, armazenar configurações ou trocar dados com outras aplicações em um formato universalmente acessível.