Innanzitutto buongiorno a tutti e grazie dell' eventuale aiuto che mi vorrete fornire :),
sono decisamente nuovo del forum e ho cercato di seguire le regole indicate in http://arduino.cc/forum/index.php/topic,149014.0.html, quindi credo che sia meglio aggiungere il mio problema qui visto che e' uguale a quello descritto in questo topic.
In pratica, dopo il 3' ciclo di esecuzione del programma l'elenco dei files visualizzato si accorcia man mano fino ad azzerarsi.
Ho installato prorpio ieri la versione 1.04 e sto lavorando con un Arduino1 rev 3 e una SD shield (FuturaNet: Il portale per makers ed elettronica by Futura Group)
presa in un negozio qui vicino, il tutto gira su windows XP.
Il programma, preso dall' esempio indicato nelle librerie SD per openNextFile(), e' il seguente :
#include <SD.h>
#include <avr/pgmspace.h>
#include "Tlc5940.h"
#include "showarray.h"
File root;
void setup() {
// You can optionally pass an initial PWM value (0 - 4095) for all channels.
Tlc.init();
// Open serial communications for DEBUG
Serial.begin(9600);
Serial.print("Initializing SD card...");
// On the Ethernet Shield, CS is pin 4. It's set as an output by default.
// Note that even if it's not used as the CS pin, the hardware SS pin
// (10 on most Arduino boards, 53 on the Mega) must be left as an output
// or the SD library functions will not work.
pinMode(10, OUTPUT);
// utilizzo il pin 8 x evitare problemi in quanto il pin 10 e' usato dal TLC5940.
// Sulla mia SD shield CS e' selezionabile tramite jumper
if (!SD.begin(8)) {
// inserire segnalazione errore n. 1
Serial.println("initialization failed!");
return;
}
Serial.println(" done.");
root = SD.open("/");
}
void printDirectory(File dir, int numTabs) {
while(true) {
File entry = dir.openNextFile();
if (! entry) {
// no more files
Serial.println("**nomorefiles**");
//mancava azzeramento contatore files nell'esempio, preso da versione 1.04,
//necessario visto che printDirectory viene eseguito + volte
[color=red]dir.rewindDirectory();[/color]
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);
}
}
}
void loop() {
unsigned int numframe;
unsigned int channel;
unsigned int temp;
[color=red]printDirectory(root, 0)[/color];
for ( numframe = 0; numframe < SHOW_FRAMES; numframe++ ) {
#ifdef DEBUG
Serial.println( );
Serial.print( numframe );
Serial.print( "-" );
#endif
for ( channel = 0; channel < 16; channel++ ) {
temp = pgm_read_byte_near( showarray + numframe * 16 + channel );
Tlc.set ( channel, 16 * temp );
#ifdef DEBUG
Serial.print( temp );
#endif
}
Tlc.update();
int ritardo = analogRead(0);
delay(ritardo);
}
}
L'output del programma su seriale e' il seguente :
Initializing SD card... done.
EFFETTI/
CINQUE.005 20164
EFFETDUE.001 6762
EFFETUNO.001 4085
QUATTRO.003 20164
TRE.002 8408
EFFETTI/
CINQUE.005 20164
EFFETDUE.001 6762
EFFETUNO.001 4085
QUATTRO.003 20164
TRE.002 8408
EFFETTI/
CINQUE.005 20164
EFFETDUE.001 6762
EFFETUNO.001 4085
QUATTRO.003 20164
TRE.002 8408
EFFETTI/
CINQUE.005 20164
EFFETTI/
EFFETTI/
EFFETTI/
Spero che non si tratti di interferenze con le librerie "TLC5940" perche' non saprei proprio come fare senza di esse, ma visto che succedeva anche all' utente di questo post che non le usava, direi proprio di no.
In attesa di una vostra risposta, cordialmente, Andrea Molteni