Errore di lettura micro SD

Ciao a tutti,
sto cercando di fare un programma per leggere file musicali da una microSD ma, come da titolo, mi sono già bloccato alla lettura della card, non riconoscendola e stampando nel monitor seriale "SD fail".
I PIN sono questi:
-CS --> 10
-MOSI --> 11
-MISO -->12
-SCK --> 13

Il codice, invece è il seguente:

#include <SD.h>             // includi la libreria SD per la gestione della scheda
#define SD_ChipSelectPin 10  // utilizza il pin 10 per collegare il CS della SD, puoi usare il pin che vuoi
#include <TMRpcm.h>         // includi la libreria TMRpcm per la musica!
#include <SPI.h>            // includi la libreria SPI per la comunicazione con la SD

TMRpcm tmrpcm;   // crea l'oggetto tmrpcm

unsigned long time = 0;
void setup() {

  tmrpcm.speakerPin = 9; // pin utilizzabili 5,6,11 o 46 sulla Mega, 9 sulla Uno, Nano, etc

  // per abilitare un'uscita complementare togliere il commento alla riga sotto:

  Serial.begin(115200);     // inizializza la porta seriale
  }
 

void loop() {
 if (!SD.begin(SD_ChipSelectPin)) {  // se la scheda non è rilevata printa "SD fail"
    Serial.println("SD fail");
    return;
  }
  else {
    Serial.println("SD ok");    // se la scheda viene rilevata stampa "SD ok"
    tmrpcm.play("kick_Dry_b.waw");         // riproduci il file "music" che trovi nella SD
}
}

Grazie in anticipo per l'aiuto :smiley:

Arduino Uno ?
Quale modulino SD ? C'e' ne sono una miriade in commercio. Sicuro non sia un modulino che lavora solo a 3,3V ?

Grazie per la risposta :smiley: ,
Sì è un Arduino UNO, l'adattatore è il seguente:

In qualunque caso ho provato anche con l'alimentazione a 3,5V ma da lo stesso messaggio di errore, solo che viene scritto con una frequenza minore (immagino che lo scambio di dati tra Arduino e la SD sia più lento)

Fai una cosa, prova prima il SOLO l'adattatore con un semplice programma di prova preso dagli esempi del IDE ...
... File -> Esempi -> SD -> CardInfo così vedi se funziona e non c'è qualche conflitto con la libreria che stai usando (TMRpcm.h).

Poi fai anche una foto (bene a fuoco) e facci vedere i collegamenti.

Guglielmo

P.S.: Quella scheda è data per funzionare a 5V quindi alimentala a 5V

Fai una cosa, prova prima il SOLO l'adattatore con un semplice programma di prova preso dagli esempi del IDE ...
... File -> Esempi -> SD -> CardInfo così vedi se funziona e non c'è qualche conflitto con la libreria che stai usando (TMRpcm.h).

Ho provato ed effettivamente da errore anche con il programma di prova.

Poi fai anche una foto (bene a fuoco) e facci vedere i collegamenti.

la foto la metto in allegato (spero di fare giusto)

Due cose ...

  1. provare a cambiare SD ... di che capacità è quella che stai usando ? L'hai formattata FAT o FAT32 ?

  2. L'SPI è una brutta bestia e i cavi lunghi danno sempre problemi ... hai dei cavetti più corti per il collegamento dei pin del SPI ?

Guglielmo

Di SD ne ho provate già due, una da 2 Gb e una da 8 Gb (entrambe formattate in FAT32), ma nessuna delle due ha funzionato.

Ho anche provato a cambiare i cavi (ho usato quelli più rigidi, che ci sono nello starter kit di Arduino) ma nulla...

Cibis:
Ho anche provato a cambiare i cavi (ho usato quelli più rigidi, che ci sono nello starter kit di Arduino) ma nulla...

Non li conosco, quanto sono lunghi ? Considera che con SPI, data la velocità del bus, parliamo di disturbi già con pochi cm. ... ::slight_smile:

Oh, poi ... potrebbe essere anche difettosa la schedina eh !

Guglielmo

Io avevo un problema simile, formattando la carta da windows a volte non riuscivo a leggerla dallo shield SD; utilizza questo programma :

Che rispetta tutte le specifiche standard.

Ciao