Arduino:
Trabajando con CSV
Cómo hacerlo:
Arduino no tiene una biblioteca incorporada específicamente para manejar archivos CSV, pero puedes usar las bibliotecas SD
y SPI
para acceder a archivos en una tarjeta SD, y luego analizar o generar datos CSV usando técnicas básicas de manipulación de cadenas. Al tratar con manipulación de CSV más compleja, la biblioteca de terceros ArduinoCSV
puede utilizarse para facilitar el análisis y la escritura.
Leyendo datos CSV desde una tarjeta SD:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("¡Inicialización fallida!");
return;
}
File dataFile = SD.open("data.csv");
if (dataFile) {
while (dataFile.available()) {
String dataLine = dataFile.readStringUntil('\n');
Serial.println(dataLine); // Imprime la línea CSV
}
dataFile.close();
} else {
Serial.println("Error al abrir data.csv");
}
}
void loop() {
// No se usa en este ejemplo
}
Salida de muestra:
SensorID, Timestamp, Value
1, 1597840923, 23.5
2, 1597840987, 22.4
Escribiendo datos CSV en una tarjeta SD:
#include <SPI.h>
#include <SD.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("¡Inicialización fallida!");
return;
}
File dataFile = SD.open("output.csv", FILE_WRITE);
if (dataFile) {
dataFile.println("SensorID, Timestamp, Value"); // Encabezado CSV
dataFile.println("1, 1597840923, 23.5"); // Fila de datos de ejemplo
dataFile.close();
Serial.println("Datos escritos");
} else {
Serial.println("Error al abrir output.csv");
}
}
void loop() {
// No se usa en este ejemplo
}
Salida de muestra:
Datos escritos
Usando ArduinoCSV para analizar:
Si se manejan archivos CSV complejos, la biblioteca ArduinoCSV
puede simplificar significativamente los esfuerzos de análisis. Este ejemplo asume que ya has instalado la biblioteca ArduinoCSV
.
#include <SPI.h>
#include <SD.h>
#include <ArduinoCSV.h>
void setup() {
Serial.begin(9600);
if (!SD.begin(4)) {
Serial.println("¡Inicialización fallida!");
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("Error al abrir data.csv");
}
}
void loop() {
// No se usa en este ejemplo
}
Salida de muestra:
SensorID, Timestamp, Value
1, 1597840923, 23.5
2, 1597840987, 22.4
En estos ejemplos, al leer y escribir en archivos CSV en una tarjeta SD, los proyectos de Arduino pueden recolectar datos fácilmente, almacenar configuraciones o intercambiar datos con otras aplicaciones en un formato universalmente accesible.