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);
}
Ciao,
essendo il tuo primo post, ti chiederei di presentartiQUI (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
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...
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?
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 )
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
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
Guglielmo
*P.S.: Vedo che al momento è out-of-stock ... prova a chiedere quando sarà di nuovo disponibile ... *
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.