#include <SD.h>
const int chipSelect = 10;
int registrosActuales = 0;
int registrosTotales = 0;
int numeroArchivo = 0;
char fileName[13];
void generarNombreArchivo() {
sprintf(fileName, "LOG%02d.TXT", numeroArchivo);
}
void setup() {
pinMode(10, OUTPUT);
digitalWrite(10, HIGH);
Serial.begin(9600);
if (!SD.begin(chipSelect)) {
Serial.println(F("Error SD"));
}
// Buscar el índice inicial libre
while (SD.exists(fileName)) {
Serial.println("entro");
numeroArchivo++;
generarNombreArchivo();
}
digitalWrite(10, LOW);
}
void loop() {
// 2. Escritura en SD
Serial.println(fileName);
File myFile = SD.open(fileName, FILE_WRITE);
if (myFile) {
digitalWrite(10, HIGH);
myFile.println(registrosTotales);
myFile.close();
Serial.println(registrosTotales);
digitalWrite(10, LOW);
registrosActuales++;
registrosTotales++;
} else {
SD.begin(chipSelect);
}
// 3. Lógica de Rotación (Cada 60 registros = 1 hora)
if (registrosActuales >= 60) {
registrosActuales = 0;
numeroArchivo++;
generarNombreArchivo();
}
// Espera segura de 60 segundos
for (int i = 0; i < 5; i++) {
delay(100);
}
}