SD NON COMUNICA CON ETHERNET SHIELD

Ciao a tutti sono marco e sono veramente alle prime armi con arduino .Ho acquistato da poco ARDUINO UNO E una scheda di rete shield ethernet con wiznet W5100 ,per prima cosa ho provato usando gli esempi (SD CARD INFO) la scheda SD ma senza nessuno risultato ,ho letto moltissimi post ma niente non riesco a farla funzionare ,sicuramente sbaglio qualcosa a scrivere nel programma cosi ho deciso di postarlo.. se qualcuno mi puoi aiutare .. grazie in anticipo .(la scheda sd è da 2 gb formattata in fat 32)

#include <SPI.h>
#include <SD.h>

Sd2Card card;
SdVolume volume;
SdFile root;
const int chipSelect = 4;
void setup() {  
Serial.begin(9600);
while (!Serial) {
 }
Serial.print("\nInitializing SD card...");

if (!card.init(SPI_HALF_SPEED, chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("* is a card inserted?");
Serial.println("* is your wiring correct?");
Serial.println("* did you change the chipSelect pin to match your shield or module?");
return;
} else {
Serial.println("Wiring is correct and a card is present.");
} 
Serial.print("\nCard type: ");
switch (card.type()) {
case SD_CARD_TYPE_SD1:
  Serial.println("SD1");
  break;
case SD_CARD_TYPE_SD2:
  Serial.println("SD2");
  break;
case SD_CARD_TYPE_SDHC:
  Serial.println("SDHC");
  break;
default:
  Serial.println("Unknown");
}  
if (!volume.init(card)) {
Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
return;
}
uint32_t volumesize;
Serial.print("\nVolume type is FAT");
Serial.println(volume.fatType(), DEC);
Serial.println();

volumesize = volume.blocksPerCluster();   
volumesize *= volume.clusterCount();       
volumesize *= 512;                            
Serial.print("Volume size (bytes): ");
Serial.println(volumesize);
Serial.print("Volume size (Kbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.print("Volume size (Mbytes): ");
volumesize /= 1024;
Serial.println(volumesize);
Serial.println("\nFiles found on the card (name, date and size in bytes): ");
root.openRoot(volume); 
root.ls(LS_R | LS_DATE | LS_SIZE);
}
(QUESTO SOTTO L HO AGGIUNTO IO )
void loop(void) {
pinMode(10,OUTPUT);                   
digitalWrite(10, LOW);  
uint8_t r = card.init(SPI_HALF_SPEED, chipSelect); 
}

QUESTA è LA SCHEDA

Ciao,
essendo il tuo primo post, ti chiederei di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con attenzione il REGOLAMENTO ...

... poi, in conformità al suddetto regolamento, punto 7, edita (in basso a destra del post, bottone More -> Modify) il tuo post e racchiudi il codice all'interno dei tag CODE (... sono quelli che in edit inserisce il bottone fatto così: </>, tutto a sinistra) ...

... infine, se metti un link alla scheda ethernet che hai comprato è meglio :wink:

Guglielmo

Perdonami, ma quale sarebbe il senso delle righe che hai aggiunto?

pinMode(10,OUTPUT);                   
digitalWrite(10, LOW);

Le hai messe tanto per fare, visto che poi il pin 10 non lo usi da nessun'altra parte? Facendo così stai attivando il CS (Chip Select) del chip Ethernet, col risultato che questo cercherà di parlare con Arduino contemporaneamente alla SD, col risultato che i dati ricevuti da Arduino saranno incomprensibili.

E poi, scusa, se prendi del codice funzionante, lo cambi e non funziona più, la prima cosa fare è ovviamente rivedere le proprie modifiche...

Allora prima ho provato con il codice originale di esempio ma niente e dopo girando su internet dicevano di aggiungere il restante codice ma niente ..

il restante codice puo' anche andare bene, solo che quello corretto è il seguente

pinMode(10,OUTPUT);                   
digitalWrite(10, HIGH);

NIENTE HO PROVATO ANCHE CON

pinMode(10,OUTPUT);                   
digitalWrite(10, HIGH);

MA NIENTE . L'ERRORE CHE MI DA E QUESTO

INITIALIZING SD CARD... INITIALIZATION FAILDE. THINGS TO CHECK:
IS A CARDD INSERTED?
IS YOUR WIRING CORRECT?
DID YOU CHANGE CHIPSELECT PIN TO MATCH YOUR SHILD OR MODULE?
:confused:

allora non gli piace codesta SD

ho gia provato 2 sd a questo punto ci rinuncio :confused:

visto che le schede comunicano attraverso il connnettpre ICSP ( quello a sei pin ) la scheda è inserita fino in fondo ?

Ho misurato con un tester se era interrotto uno dei piedini del connettore icps tra la scheda arduino e la shild ed è tutto apposto quindi l unica cosa che posso dire a questo punto è che la scheda shild è rotta (visto che mi dite che il programma è scritto bene )

Il fatto è che non serve praticamente nessun hardware per interfacciarsi con una SD, parlano il protocollo SPI nativamente.

SukkoPera:
Il fatto è che non serve praticamente nessun hardware per interfacciarsi con una SD

Serve un traslatore di livello perché le SD vanno a 3.3V. Con 5V potresti danneggiarla.

Giusto, ma è molto difficile che si guasti!

Scusate ma se la sd è integrata nella shild mi dite che serve un traslatore di livello... Non ha senso.. La shild già sarà impostata per abbassare questa tensione

infatti, nel tuo caso e' già presente nella scheda ethernet.

Hai provato con un'altra SD, ?
Vanno bene anche da 4/8/16 GB

Ho provato 4 sd niente non funziona quindi deduco che sara rotta la ethernet ... qualcuno mi puo dire dove posso comprare la ethernet originale ???

marcou:
... qualcuno mi può dire dove posso comprare la ethernet originale ???

... semplicemente NON puoi dato che NON è più prodotta al di fuori degli USA (Genuino ancora non la fa). Posso però consigliarti QUESTA che monta il W5500 (circa 10 volte più performante) documentata e con la necessaria libreria e già utilizzata, con soddisfazione, da altri utenti qui sul forum :wink:

Guglielmo

*P.S.: Vedo che al momento è out-of-stock ... prova a chiedere quando sarà di nuovo disponibile ... *

OK GRAZIE .. UN ULTIMA CORTESIA SI PUO COMPRARE DA QUESTO SITO O È SOLO ROBA AMERICANA? GRAZIE ANCORA

Da quale sito ? SeeedStudio ? Si, è un sito Cinese, ma di quelli seri ed affidabili, mentre NON puoi comprare sullo store Arduino USA perché spediscono solo in USA.

Guglielmo