Pb avec carte Wifi Arduino pour utilisation wifi ET sd

Bonjour à tous

J'ai un pb avec une carte WIFI Arduino et un UNO ou un mega 250, le tout en R3.
Je peux faire fonctionner soit le WIFI soit la SD, mais dès que je veux les deux, ça plante:
j'ai tout essayé de ce que j'ai trouvé dans les forum : pinMode(10, OUTPUT); ou 53 pour le mega, j'ai même forcé le SS non utilisé à HIGH ex : digitalWrite(4,HIGH) pour faire marcher le WIFI et digitalWrite (10,LOW), rien.
Lorsque j'initialise le WIFI d'abord, il se connecte sans pb, mais dès que j'ai initialisé le SD qui est ok, plus de Wifi.
A l'inverse si SD d'abord, SD ok, puis Wifi mais pas de réponse Wifi.
C'est pas génial pour faire un serveur WEB....
Ci joint un bout de code fait à partir de l'exemple "SimpleWebServerWiFi" de la biblio Wifi auquel j'ai inséré l'exemple "listfiles" de la biblio SD.

/*
  WiFi Web Server LED Blink
*/
 
#include <SPI.h>
#include <WiFi.h>
#include <SD.h>

File root;

char ssid[] = "dlink";      // your network SSID (name)
char pass[] = "xxxx";   // your network password
int keyIndex = 0;                // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
WiFiServer server(80);

const int chipSelect = 4;

void setup() {
  Serial.begin(9600);      // initialize serial communication
  pinMode(13, OUTPUT);      // set the LED pin mode

  Serial.print("\nInitializing SD card...");
 
 // pinMode(53, OUTPUT);     // change this to 53 on a mega
  pinMode(10, OUTPUT);

  if (!SD.begin(chipSelect)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  root = SD.open("/");
  printDirectory(root, 0);
  Serial.println("done!");

 digitalWrite(4,HIGH); // forcage SS SD pour désactiver SD

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    while (true);       // don't continue
  }

  String fv = WiFi.firmwareVersion();
  if ( fv != "1.1.0" )
    Serial.println("Please upgrade the firmware");

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) {
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid);                   // print the network name (SSID);

    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  }
  server.begin();                           // start the web server on port 80
  printWifiStatus();                        // you're connected now, so print out the status
}


void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("Click <a href=\"/H\">here</a> turn the LED on pin 9 on
");
            client.print("Click <a href=\"/L\">here</a> turn the LED on pin 9 off
");

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;
          }
          else {      // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }
        else if (c != '\r') {    // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) {
          digitalWrite(13, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(13, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  // print where to go in a browser:
  Serial.print("To see this page in action, open a browser to http://");
  Serial.println(ip);
}

void printDirectory(File dir, int numTabs) {
  while (true) {

    File entry =  dir.openNextFile();
    if (! entry) {
      // no more files
      break;
    }
    for (uint8_t i = 0; i < numTabs; i++) {
      Serial.print('\t');
    }
    Serial.print(entry.name());
    if (entry.isDirectory()) {
      Serial.println("/");
      printDirectory(entry, numTabs + 1);
    } else {
      // files have sizes, directories do not
      Serial.print("\t\t");
      Serial.println(entry.size(), DEC);
    }
    entry.close();
  }
}

Ci joint le résultat sur la console:

Initializing SD card...initialization done.
TI-01-06.CSV 26277
2015TELE.CSV 110
TI-01-07.CSV 61222
TI-01-10.CSV 61454
TI-01-11.CSV 61246
TI-01-12.CSV 61877
TI-01-13.CSV 24391
TI-01-08.CSV 61241
TI-01-09.CSV 61571
SYSTEM~1/
INDEXE~1 76
2015TELE.CS1 185
INDEX.HTM 13337
done!
Please upgrade the firmware
Attempting to connect to Network named: dlink

A noter que 'Please upgrade the firmware" indique qu'il n'a déjà pas accès au WIFI, la carte ayant été updatée et ce message n'apparait pas dès que je ne passe pas par l'activation SD (SD.begin(chipSelect))

Merci pour votre aide.

J'ai trouvé! C'était la carte SD. En changeant de type de carte, ça fonctionne.