sono in possesso di un Arduino Uno e di una shield SD presa già montata e saldata da:
Ho utilizzato tutte le librerie consigliate a fondo pagina e la più comune SD.h
La shield è collegata al mio Arduino Uno senza altri componenti o altre shields.
Purtroppo non riesco a leggere / scrivere o interagire in acun modo con la mia microSD FAT32 da 4Gb della kingston.
SD.begin(4) me lo esegue correttamente, ma quando vado ad aprire il file mi dà errore (mi restituisce 0 o false).
Tra l'altro ho notato che nel PDF allegato alla pagina del prodotto parla di jumper per il settaggio, ma come vedete dalla foto che ho fatto, io non ho nessun pin da chiudere con jumper (al loro posto ho un'altra fila di pin che si chiama CN6)
Qualcuno ha il mio stesso problema con questa shield?
Preciso che l'ho provata anche con Arduino Mega, e ho provato anche a formattare la micro SD in FAT 16 e a settare i pin dall'1 al 13 in output (al posto del 9) ma la storia non cambia
scusa ma scrivi if (!SD.begin(4)) { pin 4
e dichiari
#define sdpin 9
accertati quale è il pin ENABLE del tuo shield o è 4 o è 9 anche se la descrizione dice
Per poter gestire la SD Card viene utilizzato un ulteriore pin, e la maggior parte delle librerie open source utilizzano i pin D4, D8 o D10.
settare i pin dall'1 al 13 in output (al posto del 9) ma la storia non cambia
per settare cosa intendi nel setup? o nell'SD.begin, perchè se il pin non lo metti prima come output non funzionerà correttamente
segui le piste sullo shield se proprio non le trovi
Da quello che ho capito, per utilizzare la shield SD bisogna dichiarare due pin, uno che va passato nel metodo begin() e l'altro che va impostato come output giusto?
Solo che io non so quali sono e non riesco a impostare i pin della mia scheda, perchè il PDF allegato nella pagina del prodotto dice:
Infatti se guardi il PDF, riporta una foto di una shield SD con i jumper.
Ma basta vedere la foto nella pagina prodotto, e vedi che non ha i jumper (è esattamente come la mia shield).
Tornando al mio problema: ho seguto le piste e ho individuato i pin 8 e 10, uno dei due potrebbe essere quello giusto.
Ho provato ad eseguire questo codice di esempio (è una libreria consigliata nella pagina prodotto della shield), inutile dire che non funziona...ho provato a impostare i pin dall'1 al 13 e il messaggio di errore è sempre lo stesso: Can't access SD card. Do not reformat. No card, wrong chip select pin, or SPI problem? SD errorCode: 0X1,0X0
Questo è il codice di esempio della libreria:
// Ported to SdFat from the native Arduino SD library example by Bill Greiman
// On the Ethernet Shield, CS is pin 4. SdFat handles setting SS
const int chipSelect = 8;
/*
SD card read/write
This example shows how to read and write data to and from 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
updated 2 Dec 2010
by Tom Igoe
modified by Bill Greiman 11 Apr 2011
This example code is in the public domain.
*/
#include <SdFat.h>
SdFat sd;
SdFile myFile;
void setup() {
Serial.begin(9600);
while (!Serial) {} // wait for Leonardo
Serial.println("Type any character to start");
while (Serial.read() <= 0) {}
delay(400); // catch Due reset problem
// Initialize SdFat or print a detailed error message and halt
// Use half speed like the native library.
// change to SPI_FULL_SPEED for more performance.
if (!sd.begin(chipSelect, SPI_HALF_SPEED)) sd.initErrorHalt();
// open the file for write at end like the Native SD library
if (!myFile.open("test.txt", O_RDWR | O_CREAT | O_AT_END)) {
sd.errorHalt("opening test.txt for write failed");
}
// if the file opened okay, write to it:
Serial.print("Writing to test.txt...");
myFile.println("testing 1, 2, 3.");
// close the file:
myFile.close();
Serial.println("done.");
// re-open the file for reading:
if (!myFile.open("test.txt", O_READ)) {
sd.errorHalt("opening test.txt for read failed");
}
Serial.println("test.txt:");
// read from the file until there's nothing else in it:
int data;
while ((data = myFile.read()) >= 0) Serial.write(data);
// close the file:
myFile.close();
}
void loop() {
// nothing happens after setup
}