Je ne vois pas dans ton code la gestion du SS de la SD à low sur le Pin 4 et la même chose sur le Pin 10 pour l'Ethernet?
Tu dois gérer tanto l'accès à l'ethernet, tantot l'accès à la SD et là ça n'est pas pris en compte.
Car ces 2 fonctions partagent le même bus SPI sur les Pins MOSI - pin 11 / ** MISO - pin 12 et ** CLK - pin 13
Essaie d'insérer ton code dans la trame que j'avais donné:
#define SS_SD_CARD 4
#define SS_ETHERNET 10
void setup() {
// ...
pinMode(SS_SD_CARD, OUTPUT);
pinMode(SS_ETHERNET, OUTPUT);
digitalWrite(SS_SD_CARD, HIGH); // SD Card not active
digitalWrite(SS_ETHERNET, HIGH); // Ethernet not active
// ...
}
void sdCardCode() {
// ...
digitalWrite(SS_SD_CARD, LOW); // SD Card ACTIVE
// code that sends to the sd card slave device over SPI
// using SPI.transfer() etc.
digitalWrite(SS_SD_CARD, HIGH); // SD Card not active
// ...
}
void ethernetCode() {
// ...
digitalWrite(SS_ETHERNET, LOW); // Ethernet ACTIVE
// code that sends to the ethernet slave device over SPI
// using SPI.transfer() etc.
digitalWrite(SS_ETHERNET, HIGH); // Ethernet not active
// ...
}
Et qui te permet de passer de l'un à l'autre ![]()