/*############################################################################
Autor: Mario Parente
Projeto: Criação e leitura de arquivos no Cartão SD
Data: 23/06/2023
Detalhes do projeto: Demostração de algumas funções do leitor de SD_Card
############################################################################*/
#include <SD.h>
#include <SPI.h>
File Arquivo;
int pinoSS = 10; // Pin 53 para Mega / Pin 10 para UNO
void setup() { // Executado uma vez quando ligado o Arduino
pinMode(2, INPUT_PULLUP);
Serial.begin(9600); // Define BaundRate
pinMode(pinoSS, OUTPUT); // Declara pinoSS como saída
if (SD.begin(pinoSS)) { // Inicializa o SD Card
Serial.println("SD Card pronto para uso."); // Imprime na tela
}
else {
Serial.println("Falha na inicialização do SD Card.");
return;
}
Arquivo = SD.open("/");
Lendo_Diretorio(Arquivo, 0);
Escrevendo_dados();
}
void loop() {
if (digitalRead(2) == 0) { //se o borao for pressionado
Serial.println("Conteúdo do Arquivo:"); // Imprime na tela
Arquivo = SD.open("SD.txt"); // Abre o Arquivo
while (Arquivo.available()) { //
Serial.write(Arquivo.read()); //Exibe o conteúdo do Arquivo
}
Arquivo.close(); // Fecha o Arquivo após ler
}
}
// Função de escreve os dado em um arquivo do Cartão..........................................................
void Escrevendo_dados(){
Arquivo = SD.open("SD.txt", FILE_WRITE); // Cria / Abre arquivo .txt
if (Arquivo) { // Se o Arquivo abrir imprime:
Serial.println("Escrevendo no Arquivo"); // Imprime na tela
Arquivo.println(""); // Pula a ultima linha do arquivo
Arquivo.println("Escrevendo isso na ultima linha e pula para a proxima."); //Escreve e depois pula uma linha
Arquivo.close(); // Fecha o Arquivo após escrever
Serial.println("Terminado."); // Imprime na tela
Serial.println(" ");
}
else { // Se o Arquivo não abrir
Serial.println("Erro ao Abrir"); // Imprime na tela
}
}
//.........................Fim da função.........................................................................
// Função de leitura de todos o arquivos na raiz do Cartão...............................
void Lendo_Diretorio(File dir, int numTabs) {
while (true) {
File entry = dir.openNextFile();
if (! entry) { // sem mais arquivos
break;
}
for (uint8_t i = 0; i < numTabs; i++) {
Serial.print('\t');
}
Serial.print(entry.name());
if (entry.isDirectory()) {
Serial.println("/");
Lendo_Diretorio(entry, numTabs + 1);
}
else { // arquivos têm tamanhos, diretórios não
Serial.print("\t\t");
Serial.println(entry.size(), DEC);
}
entry.close();
}
Serial.println(" ");
}
//.........................Fim da função.........................................................................