segunda-feira, 3 de junho de 2013

Utilização de cartões SD

Olá, Neste artigo iremos ver como ler e escrever em um cartão SD com o arduino. A IDE do arduino já possui uma API para trabalhar com SDs. Mostraremos como utilizá-la.
Material necessário:

  • Arduino
  • Módulo de leitura e escrita de cartão SD - aqui
  • Alguns fios
A implementação da biblioteca do arduino (SD.h) utiliza um padrão chamado de SPI - Serial Peripheral Interface Bus. Para maiores detalhes, clique aqui e aqui.
Essa biblioteca utiliza alguns pinos pré-definidos. A ligação dos mesmos deve seguir a tabela abaixo.


No módulo há indicações de cada um dos pino. Ver figura abaixo.


Lembre-se de ligar os pinos de 5V e 3.3V. O Módulo precisa de ambos para funcionar. O Cartão SD deverá está formatado com o sistema de arquivos FAT.

Segue abaixo um exemplo de ligação do módulo ao arduino.


Segue o fonte para o arduino UNO

 #include <SD.h>  
 //Pino CS do arduino UNO  
 #define CS 10  
 File myFile;  
 #define FILENAME "teste.txt"  
 void setup()  
 {  
  Serial.begin(9600);  
  Serial.print("Inicializando SD...");  
  pinMode(CS, OUTPUT);//Inicializando pino CS como output  
  if (!SD.begin(CS)) {//Inicializando SD card  
   Serial.println("Falha!");  
   return;  
  }  
  Serial.println("Ok!");  
  if(!SD.exists(FILENAME))//Se nao existe o arquivo  
  {  
   myFile = SD.open(FILENAME, FILE_WRITE);//Abrindo arquivo para gravacao  
   if (myFile)   
   {  
    Serial.print("Escrevendo no arquivo...");  
    myFile.println("teste 1, 2, 3.");  
    myFile.println("teste 4, 5, 6.");  
    myFile.close();  
    Serial.println("fim de escrita.");  
   }   
   else   
   {  
    Serial.println("erro na abertura");  
   }  
  }  
  myFile = SD.open(FILENAME, FILE_READ);//Abrindo o arquivo para leitura  
  char tmp;  
  while(myFile.available())//Enquanto nao chega no fim do arquivo  
  {  
   tmp = myFile.read();//Leitura de cada caractere   
   Serial.print(tmp);  
  }  
  myFile.close();//Fechando arquivo  
 }  
 void loop()  
 {  
  //Nao se faz necessario usar  
 }  

A saída serial deve apresentar algo parecido com:


Até a próxima

5 comentários:

  1. Só da Falha...se puder me ajudar...preciso usar no meu trabalho.

    ResponderEliminar
  2. realmente é necessário fazer a ligação do módulo no 3.3V e no 5V ao mesmo tempo?? estou utilizando um arduino MEGA e o cartão nunca é reconhecido, preciso fazer um datalogger.

    ResponderEliminar