/*
Listfiles
This example shows how print out the files in a
directory on a SD card.Pin numbers reflect the default
SPI pins for Uno and Nano models
The circuit:
SD card attached to SPI bus as follows:
** SDO - pin 11
** SDI - pin 12
** CLK - pin 13
** CS - depends on your SD card shield or module.
Pin 10 used here for consistency with other Arduino examples
(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 24 July 2020
by Tom Igoe
This example code is in the public domain.
*/
#include <SD.h>
//DEBUG_Brincando_com_Idéias_INÍCIO
#define pinBotaoDebug 7
//#define habilitaDebugSerial true //define se envia informações do funcionamento para o monitor serial. "true" envia e "false" não envia. Utilizado apenas para identificar problemas de funcionamento atraves do monitor serial do IDE Arduino. Em situações normais, definir este parametro como "false". Quando usar o monitor, ele deve ser configurado para a velocidade de 115200.
#if habilitaDebugSerial == true
void debug(int pontoParada, String nomeVariavel, String valorVariavel, int tempoParada = -1) { //TempoParada faz delay. Com -1, para até porta 13 mudar de nível
Serial.print("(");
Serial.print(pontoParada);
Serial.print(") ");
Serial.print(nomeVariavel);
Serial.print(":");
Serial.print(valorVariavel);
Serial.println();
if (tempoParada == -1) {
static bool estadoBotaoAnt = digitalRead(pinBotaoDebug);
static unsigned long delayDebounce;
bool estadoBotao;
bool aguarda = true;
while (aguarda) {
estadoBotao = digitalRead(pinBotaoDebug);
if ( (estadoBotao != estadoBotaoAnt) && !estadoBotao ) {
if ((millis() - delayDebounce) > 100) {
aguarda = false;
delayDebounce = millis();
}
} else if (estadoBotao != estadoBotaoAnt) {
delayDebounce = millis();
}
estadoBotaoAnt = estadoBotao;
}
} else if (tempoParada > 0) {
delay(tempoParada);
}
}
#endif
//DEBUG_Brincando_com_Idéias_FIM
const int chipSelect = 4;
File root;
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
//DEBUG_Brincando_com_Idéias_INÍCIO
#if habilitaDebugSerial == true
//Serial.begin(9600);
pinMode(pinBotaoDebug, INPUT_PULLUP);
#endif
//DEBUG_Brincando_com_Idéias_FIM
// wait for Serial Monitor to connect. Needed for native USB port boards only:
while (!Serial);
Serial.print("Initializing SD card...");
if (!SD.begin(chipSelect)) {
Serial.println("initialization failed. Things to check:");
Serial.println("1. is a card inserted?");
Serial.println("2. is your wiring correct?");
Serial.println("3. did you change the chipSelect pin to match your shield or module?");
Serial.println("Note: press reset or reopen this serial monitor after fixing your issue!");
while (true);
}
Serial.println("initialization done.");
root = SD.open("/");
printDirectory(root, 0);
Serial.println("done!");
File testando_var_arquivo;
//create file
Serial.println("Creating file..");
testando_var_arquivo = SD.open("testando.db", FILE_WRITE);
// if the file opened okay, write to it:
if (testando_var_arquivo) {
Serial.print("Escrevendo no testando.db...");
testando_var_arquivo.println("testing 1, 2, 3.");
// close the file:
testando_var_arquivo.close();
Serial.println("done.");
} else {
// if the file didn't open, print an error:
Serial.println("error opening testando.db");
}
// re-open the file for reading:
testando_var_arquivo = SD.open("testando.db");
if (testando_var_arquivo) {
Serial.println("Conteúdo do testando.db:");
// read from the file until there's nothing else in it:
while (testando_var_arquivo.available()) {
Serial.write(testando_var_arquivo.read());
}
// close the file:
testando_var_arquivo.close();
} else {
// if the file didn't open, print an error:
Serial.println("error opening testando.db");
}
root = SD.open("/");
printDirectory(root, 0);
}
void loop() {
// nothing happens after setup finishes.
}
void printDirectory(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) {
//DEBUG_Brincando_com_Idéias_INÍCIO
#if habilitaDebugSerial == true
debug(1, "entry", String(entry));
#endif
//DEBUG_Brincando_com_Idéias_FIM
// no more files
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
//DEBUG_Brincando_com_Idéias_INÍCIO
#if habilitaDebugSerial == true
debug(2, "i", String(i));
#endif
//DEBUG_Brincando_com_Idéias_FIM
Serial.print('\t');
}
Serial.print(entry.name());
//DEBUG_Brincando_com_Idéias_INÍCIO
#if habilitaDebugSerial == true
debug(3, "entry.name()", String(entry.name()));
#endif
//DEBUG_Brincando_com_Idéias_FIM
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();
}
}