O módulo micro SD possibilita a leitura e gravação de cartões de memória. É extremamente útil para projetos que exigem registro de dados. Ideal para gravar arquivos de logs com resultado de leituras de sensores e consequentemente transferir os arquivos gerados no cartão para qualquer computador que possua um leitor de cartão micro SD.
O módulo usa a interface SPI como padrão para a comunicação com o arduino, ela envolve barramentos SPI, MISO, MOSI, SCK e um pino de sinal CS.
A própria IDE do arduino já possui uma biblioteca específica para facilitar a comunicação com este módulo, dessa forma é simplificada ao máximo a programação para utilização de seus recursos.
O módulo se comunica pela interface SPI e seu nível lógico de sinal é de 3.3V, no entanto, além de possuir um regulador de tensão, o módulo também possui um divisor de tensão, o qual permite a ligação direta nos 5V fornecido pelo arduino.
OBS: Observe que o sistema de arquivos do cartão micro SD deve ser FAT16 ou FAT32. Caso contrário, a biblioteca SD do Arduino não poderá ler e escrever no mesmo.
Estas são as portas padrão de comunicação via SPI do Arduino Uno, as mesmas não devem ser alteradas. Para mais informações, consulte a tabela de pinagem do Arduino Uno.
LISTA DOS COMPONENTES
//Incluir as bibliotecas necessárias
#include <SPI.h>
#include <SD.h>
const int chipSelect = 10; //pino utilizado pelo terminal CS do módulo
void setup(){
Serial.begin(9600); //inicializa o monitor Serial
while(!Serial){ //aguarda a conexão da porta serial;
}
//imprime texto no monitor serial
Serial.println("Inicializando o cartão de memória...");
Serial.println("**********************************");
pinMode(SS, OUTPUT); //define pinMode como saída
if(!SD.begin(chipSelect)){ //se o cartão não for reconhecido, faz:
//imprime texto no monitor serial
Serial.println("Cartão de memória falhou ou não está presente!");
return; //não executa o restante do código
}
//imprime texto no monitor serial
Serial.println("Cartão de memória inicializado com sucesso!");
Serial.println("*************************************");
Serial.println("Mensagem do arquivo de texto que está no cartão de memória:");
Serial.println(); //quebra de linha no serial
SDFile dataFile = SD.open("arquivo.txt"); //dataFile recebe o conteúdo do arquivo
// Caso tenha mais de um arquivo, abre um arquivo por vez
if(dataFile){ //se existirem dados, faz:
while(dataFile.available()){ //enquanto houver conteúdo a ser lido, faz
Serial.write(dataFile.read()); //escreve na serial as informações do arquivo
}
//encerra a leitura, fechar o arquivo atual para poder abrir um outro
dataFile.close();
}
else{ //se não existirem dados, faz
//imprime texto do erro no monitor serial
Serial.println("Erro ao abrir o arquivo!");
}
}
void loop(){
//não necessita repetir a ação
}