Módulo SDCard no Arduino

O módulo SDCard permite ler, escrever, e apagar dados de um Cartão SD ou Micro SD(se você utilizar um adaptador).

Aprenda como usar esse módulo para salvar e ler dados, além de excluir arquivos usando apenas a Serial!


O módulo utilizado nesse tutorial suporta cartões de até 4 gigas, e utiliza 4 pinos do Arduino.

sd-card-module_ifuturetech-org_2

Requerimentos:

  • Módulo SDCard
  • Arduino

Montagem:

SDCard GND –> Arduino GND
SDCard 3.3v –> Arduino 3.3v
SDCard 5v
SDCard CS –> Arduino digital 4
SDCard Mosi –> Arduino digital 11
SDCard SCK –> Arduino digital 13
SDCard Miso –> Arduino digital 12
SDCard GND

ligacao

Sketch:

#include <SPI.h> //Incluímos as bibliotecas necessárias
#include <SD.h>  //Para o funcionamento do módulo

File arquivo;  //Dizemos que nosso arquivo é da classe File

void sdWriteLn(String text){  //essa função vai escrever linhas no nosso arquivo
arquivo = SD.open("ARDUINO.txt", FILE_WRITE);  //abrimos o nosso arquivo para escrever: "nomedoarquivo.extensão", escrever/ler
if(arquivo){  //verifica se o arquivo foi aberto
Serial.print("Escrevendo: \"" + text + "\"..."); //se o arquivo foi aberto, dizemos para o monitor serial que estamos tentando escrever
arquivo.println(text);  //escrevemos no arquivo ARDUINO.txt
Serial.println("Terminado.");  //escrevemos na serial que foi escrito.
}else{ //se o arquivo não foi aberto...
Serial.println("Escrevendo...Falha.");  //dizemos na serial que não foi aberto
}
arquivo.close();  //aberto ou não, sempre devemos fechar o nosso arquivo
}

void sdRead(){  //essa função vai ler o nosso arquivo e escrever na serial
arquivo = SD.open("ARDUINO.txt");  //como sempre, devemos abrir nosso arquivo antes de qualquer operação, note que para ler é só abrir o arquivo 
if(arquivo){  //verificamos se foi aberto para podermos manipular o arquivo
Serial.println("ARDUINO.txt: ");  //Se sim, escrevemos na serial o nome do nosso arquivo

while(arquivo.available()){  //e enquanto o nosso arquivo está disponível...
Serial.write(arquivo.read());  //escrevermos o que foi recebido na serial
}
}else{ //se o arquivo não foi aberto...
Serial.println("Erro ao ler ARDUINO.txt"); //imprimimos na serial que não foi possível ler
}
arquivo.close(); //e por fim, fechamos nosso arquivo
}

void sdDelete(){  //essa função vai deletar o nosso arquivo, nós podemos criar ele novamente apenas abrindo-o para leritura
Serial.print("Deletando..."); //na serial que estamos tentando deletar
SD.remove("ARDUINO.txt");  //enviamos o comando para deletar
if(SD.exists("ARDUINO.txt")){  //verificamos se o arquivo ainda existe
Serial.println("Falha.");  //se existe, dizemos que não foi possível deletar
}else{ //se não existe...
Serial.println("Terminado."); //dizemos que foi deletado
}
}

void setup(){
Serial.begin(9600); //iniciamos a serial com 9600 bauds

Serial.print("Iniciando SDCard...");  //escrevemos na serial que estamos iniciando o SDCard

if (!SD.begin(4)){ //se o sdcard com o CS na 4 não for iniciado
Serial.println("Falhou.");  //escrevemos na serial que falhou
return;
}
Serial.println("Terminado."); //dizemos q a tentativa de iniciar terminou

sdRead(); //tentamos ler o arquivo
sdWriteLn("Ardudino!"); //escrevemos uma mensagem para dizer que o SDCard está pronto para uso
}

void loop(){
String serialText;  //essa variável vai guardar o que recebermos do monitor serial
while (Serial.available()){ //enquanto a serial estiver disponível
delay(10); //vamos aguardar 10ms
char c = Serial.read();  //e ler um char da serial
serialText += c;  //e adicionar esse char na nossa String serialText
}

if(serialText.length() > 0){ //quando a serial não estiver disponível, verificamos se serialText tem pelo menos uma letra
if(serialText == "sdRead"){ //se tiver mais de uma letra, e é igual sdRead...
sdRead();  //chamamos o método de leitura
serialText = "";  //limpamos a nossa String para que possamos utiliza-la novamente
}else if(serialText == "sdDelete"){  //se a nossa String for sdDelete...
sdDelete();  //vamos chamar o método que vai excluir o nossso arquivo
serialText = ""; //novamente limpamos nossa string.
}else{ //se nossa String não é sdRead, nem sdDelete, então vamos escrevê-la no nosso arquivo:
sdWriteLn(serialText); //chamamos nosso método de escrever com nossa String serialText como argumento
serialText = ""; //limpamos nossa variável!
}
}
}

Comandos:

  • sdDelete = exclui nosso arquivo
  • sdRead = lê nosso arquivo
  • Qualquer outro texto vai ser escrito no nosso arquivo
Anúncios

Um comentário sobre “Módulo SDCard no Arduino

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s