Dicho menu se muestra en una interfaz de usuario, la primera opcion cuando se ejecuta me dara la lista de archivos que se encuentran en la SD1.
La segunda opcion cuando se ejecuta me permitira seleccionar uno de los archivos que se encuentran en la SD1 y me permitira copiarlo a la SD2
agradeciria si alguien me puede guiar en como hacer todo esto, pues estos modulos me resultan algo desconocidos.
#include <SD.h>
const int chipSelect1 = 4; // Pin CS de la primera tarjeta SD
const int chipSelect2 = 5; // Pin CS de la segunda tarjeta SD
void setup() {
Serial.begin(9600);
// Inicialización de la primera tarjeta SD
if (!SD.begin(chipSelect1)) {
Serial.println("Error al inicializar la primera tarjeta SD.");
return;
}
Serial.println("Primera tarjeta SD inicializada correctamente.");
// Inicialización de la segunda tarjeta SD
if (!SD.begin(chipSelect2)) {
Serial.println("Error al inicializar la segunda tarjeta SD.");
return;
}
Serial.println("Segunda tarjeta SD inicializada correctamente.");
// Lee y escribe el archivo en ambas tarjetas
transferirArchivo("archivo.txt");
}
void loop() {
}
void transferirArchivo(String nombreArchivo) {
// Abre el archivo de lectura en la primera tarjeta
File archivoLectura = SD.open(nombreArchivo, FILE_READ);
// Si no se puede abrir el archivo, muestra un mensaje y termina la función
if (!archivoLectura) {
Serial.println("Error al abrir el archivo en la primera tarjeta SD.");
return;
}
// Abre el archivo de escritura en la segunda tarjeta
File archivoEscritura = SD.open(nombreArchivo, FILE_WRITE);
// Si no se puede abrir el archivo, muestra un mensaje y termina la función
if (!archivoEscritura) {
Serial.println("Error al abrir el archivo en la segunda tarjeta SD.");
archivoLectura.close();
return;
}
// Lee el contenido del archivo de lectura y escríbelo en el archivo de escritura
while (archivoLectura.available()) {
archivoEscritura.write(archivoLectura.read());
}
// Cierra ambos archivos
archivoLectura.close();
archivoEscritura.close();
Serial.println("Archivo transferido correctamente de la primera a la segunda tarjeta SD.");
}
pero cuando conecto los dos modulos no me funciona
Te sirve usando la librería SdFat en lugar de la librería SD?
#include <SdFat.h>
const int chipSelect1 = 4; // Pin CS de la primera tarjeta SD
const int chipSelect2 = 5; // Pin CS de la segunda tarjeta SD
SdFat SD1;
SdFat SD2;
void setup() {
Serial.begin(115200);
if (!SD1.begin(chipSelect1)) {
Serial.println("Error al inicializar la primera tarjeta SD.");
return;
}
Serial.println("Primera tarjeta SD inicializada correctamente.");
// Inicialización de la segunda tarjeta SD
if (!SD2.begin(chipSelect2)) {
Serial.println("Error al inicializar la segunda tarjeta SD.");
return;
}
Serial.println("Segunda tarjeta SD inicializada correctamente.");
// Lee y escribe el archivo en ambas tarjetas
transferirArchivo("archivo.txt");
}
void loop() {
}
void transferirArchivo(String nombreArchivo) {
// Abre el archivo de lectura en la primera tarjeta
File archivoLectura = SD1.open(nombreArchivo, FILE_READ);
// Si no se puede abrir el archivo, muestra un mensaje y termina la función
if (!archivoLectura) {
Serial.println("Error al abrir el archivo en la primera tarjeta SD.");
return;
}
// Abre el archivo de escritura en la segunda tarjeta
File archivoEscritura = SD2.open(nombreArchivo, FILE_WRITE);
// Si no se puede abrir el archivo, muestra un mensaje y termina la función
if (!archivoEscritura) {
Serial.println("Error al abrir el archivo en la segunda tarjeta SD.");
archivoLectura.close();
return;
}
// Lee el contenido del archivo de lectura y escríbelo en el archivo de escritura
while (archivoLectura.available()) {
archivoEscritura.write(archivoLectura.read());
}
// Cierra ambos archivos
archivoLectura.close();
archivoEscritura.close();
Serial.println("Archivo transferido correctamente de la primera a la segunda tarjeta SD.");
}
Si, pero si usas dos (en el supuesto que la clase SD admita más de una instancia), ¿cómo determinas a cuál te refieres en ésta sección del código?
// Abre el archivo de lectura en la primera tarjeta
File archivoLectura = SD.open(nombreArchivo, FILE_READ);
// ...
// Abre el archivo de escritura en la segunda tarjeta
File archivoEscritura = SD.open(nombreArchivo, FILE_WRITE);
¿SD se refiere a la clase SD que iniciaste con chipSelect1 o a la que iniciaste con chipSelect2?