Problemi con SD

Gentilissimi,
ho un problema quando ripeto più volte il comando che lista i files sulla SD.

Il mio hardware:

ARDUINO GENUINO UNO
ARDUINO ETHERNET SHIELD
MICRO SD 2GB

Scketch di partenza : Examples/SD/Listfiles

L'ho modificato inserendo in un loop la chiamata

  for (int i = 1; i<100; i++){
    myFile = SD.open("/");
    printDirectory(myFile, 0);
    Serial.println(" ");
    Serial.print(" Contatore ");
    Serial.println(i);
    Serial.println(" ");

Allego lo sketck completo, con in fondo il risultato che ottengo sul monitor seriale... in pratica tutto funziona bene fino al contatore = 9, al successivo perde qualche colpo, e dal contatore = 20 non funziona più.

Molte grazie per qualsiasi consiglio
Cordialità

listfiles3.ino (10.7 KB)

p.s. : per provare lo schetch eliminate l'ultima riga, ho messo due volte il */

Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

gpb01:
Buongiorno,
essendo il tuo primo post nella sezione Italiana del forum, nel rispetto del regolamento di detta sezione (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo

... fatto
Grazie
Luciano

I file che apri devi anche chiuderli!

SukkoPera:
I file che apri devi anche chiuderli!

Ti ringrazio molto per il suggerimento.. E in pratica mi sai anche dire come devo fare ?

myFile.close()?

SukkoPera:
myFile.close()?

Grazie !!! Gentilissimo. Questo problema mi ha fatto uscire pazzo.

Però a questo punto il file listfiles.ino distribuito nell'esempio dell'SDK Arduino andrebbe quanto meno corretto, ad evitare che qualcun'altro incappi nello stesso problema.
Il file corretto potrebbe essere qualcosa del genere:

/*
  Listfiles

 This example shows how print out the files in a
 directory on a SD card

 The circuit:
 * SD card attached to SPI bus as follows:
 ** MOSI - pin 11
 ** MISO - pin 12
 ** CLK - pin 13
 ** CS - pin 4 (for MKRZero SD: SDCARD_SS_PIN)

 created   Nov 2010
 by David A. Mellis
 modified 9 Apr 2012
 by Tom Igoe
 modified 2 Feb 2014
 by Scott Fitzgerald
 modified 7 Gen 2018
 by Luciano Pautasso (thanks to SuccoPera) #07012018

 This example code is in the public domain.

 */
#include <SPI.h>
#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 native USB port only
  }

  Serial.print("Initializing SD card...");

  if (!SD.begin(4)) {
    Serial.println("initialization failed!");
    return;
  }
  Serial.println("initialization done.");

  root = SD.open("/");

  printDirectory(root, 0);

  // #07012018 close file ! ( to avoid error repeating this action more times)
  root.close();
  // #07012018 close file ! ( to avoid error repeating this action more times)

  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
      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);
    }
    entry.close();
  }
}

Moderatori, che ne pensate?

Molte grazie ancora.
Cordialità.

realmeteo:
Moderatori, che ne pensate?

Credo tu faccia confusione ...
... i "moderatori" e gli "admin" si occupano (nel loro tempo libero e gratuitamente) della "gestione" del forum (... e neanche dello sviluppo e dei bugs di esso) e nulla hanno a che vedere con tutto il resto. :slight_smile:

Guglielmo