Ciao a tutti,
sto avendo non poche difficoltà nel far funzionare queste due schede insieme anche se dovrebbero essere compatibili. Finchè utilizzo la parte ethernet funziona tutto perfettamente. Non appena carico uno Sketch che usa la scheda SD come questo:
/*
SD card basic file example
This example shows how to create and destroy an SD card file
The circuit:
* SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4
created Nov 2010
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
This example code is in the public domain.
*/
#include <SD.h>
File root;
void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(53, OUTPUT);
if (!SD.begin(10)) {
Serial.println("initialization failed!");
return;
}
Serial.println("initialization done.");
root = SD.open("/");
printDirectory(root, 0);
Serial.println("done!");
}
void loop()
{
// nothing happens after setup finishes.
}
void printDirectory(File dir, int numTabs) {
while(true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
//Serial.println("**nomorefiles**");
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);
}
}
}
in primo luogo stampa "initialization failed!" ma oltretutto, se provo a caricare uno sketch che fino a due minuti prima funzionava e che usava la scheda ethernet, da questo momento non funziona più, e continua a non funzionare per qualche ora, nonostante vari riavvii (tolgo alimentazione e tutti i cavi per qualche secondo e rimetto, oppure provo a prendere il tasto reset sia della Mega che della Ethernet shield). Questo mi sembra a dir poco assurdo. Poi magari dopo due o tre ore di continui riavvii, ad un certo punto riprende a funzionare. Siamo sicuri che il comando
if (!SD.begin(10)) {
sia corretto? Non dovrei passare anche qui la porta 53 dato che io uso la scheda Mega 2560? La cosa assurda è che qualche giorno fa (solo una volta) ha funzionato addirittura anche la lettura della scheda SD, ma spostandomi dalla cucina alla camera (quindi solo spegnendo e riaccendendo, senza cambiare il codice) ha smesso di funzionare.