Error modulo SD

Buen dia

me encuentro desarrollando un proyecto el cual consta de dos modulos SD y una ESP32, mi idea es mover datos entre la SD, inicialmente estoy inscribiendo datos en una de ellas y funciona muy bien, pero cuando tengo lass dos conectadas surge un error y no me lee ninguno de los dos modulos. se que estos modulos usan la comunicacion SPI pero no se si al conectar mas de un modulo deba hacer una conexion externa o conectarlos de diferente manera.

actualmente estos modulos estan conectados de la siguiente manera

donde los pines:

G19 es MISO
G18 es SDK
G23 es MOSI
G5 es la direccion del primer moculo
G4 es la direccion del segundo modulo

el codigo que estoy usando es el siguiente, en este codigo estoy intentando inscribir un archivo a uno de los modulos pero con los dos mudulos conectados:

#include <SD.h>
#include "SPI.h"
// Define el pin CS para la comunicación SPI con la tarjeta SD
#define SD_CS_PIN 5
#define SD_CS_PIN2 4

// Nombre del archivo para escribir los datos del potenciómetro
const char* fileName = "/datos_potenciometro.txt";

// Pin del potenciómetro
const int potPin = 8;
int segundos=0;
int dia=0;
int horas=0;
int minutos=0;


void setup() {
  Serial.begin(115200);
  
  // Inicializa la comunicación con la tarjeta SD
  pinMode(SD_CS_PIN, OUTPUT);
  pinMode(SD_CS_PIN2, OUTPUT);

  digitalWrite(SD_CS_PIN, LOW);
  digitalWrite(SD_CS_PIN2, LOW);

  if (!SD.begin(SD_CS_PIN)) {
    Serial.println("Fallo al inicializar la tarjeta SD1");
    while (1);
  }
  if (!SD.begin(SD_CS_PIN2)) {
    Serial.println("Fallo al inicializar la tarjeta SD2");
    while (1);
  }

  Serial.println("Tarjeta SD inicializada correctamente");
}

void loop() {
  // Lee el valor del potenciómetro

  digitalWrite(SD_CS_PIN, HIGH);
  digitalWrite(SD_CS_PIN2, LOW);
  int valorPot = analogRead(potPin);
  
  // Convierte el valor del potenciómetro a una cadena de caracteres
  char cadena[10];
  itoa(valorPot, cadena, 10);
  

  
  // Abre el archivo en modo de escritura y lo crea si no existe
  File file = SD.open(fileName, FILE_WRITE);
  
  if (file) {
    // Escribe el valor del potenciómetro en el archivo
    segundos = segundos +2;

    if(segundos>=60){
      segundos=0;
      minutos=minutos+1;
    }
    if(minutos>=60){
      horas=horas+1;
      minutos = 0;
    }
    if(horas>=24){
      dia=dia+1;
      horas=0;
    }
    file.print("dia: ");
    file.print(dia);
    file.print(" Hora: ");
    file.print(horas);
    file.print(" minuto: ");
    file.println(minutos);

    file.println("Hola");
    file.println("Que tal");
    
    
    // Cierra el archivo
    file.close();
    //Serial.print(valorPot);
    Serial.println("Datos escritos en el archivo correctamente");

  } else {
    Serial.println("Fallo al abrir el archivo");
  }

  // Espera un momento antes de escribir nuevamente los datos
  while(millis()%2000!=0){}
}

en resumen cuando tengo un solo modulo conectado me funciona muy bien pero cuando conecto los dos no me lee ningun modulo

agradesco si alguien me podria aconsejar, muchas gracias

digitalWrite(SD_CS_PIN, LOW);
digitalWrite(SD_CS_PIN2, LOW);

Está seleccionando ambas SD al mismo tiempo por eso no inicializan.
Solo tiene que estar en LOW el CS de la SD sobre la que va a operar.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.