Modulo Micro sd

#include <SD.h>
#include <SPI.h>

int CS_PIN = 10;
File file;
void setup()
{

  Serial.begin(9600);
  while (!Serial) {
  }
  Serial.print("Iniciando cartão SD...");
  if (!SD.begin(CS_PIN)) {
    Serial.println("Falha na leitura do cartão.");
    while (1);
  }
  Serial.println("Cartão iniciado.");

  String nomeArquivo = "teste.txt";
  
  /*Abrindo txt*/
  file = SD.open(nomeArquivo);
  if(file){

    /*Variáveis*/
    String linha = ""; /*texto da linha lida*/
    char letra; /*Caractere lido*/
    int countLinha = 0; /*numero da linha*/
    int tamLinha = 0; /*tamanho da linha*/
    int tamVetor = 0; /*tamanha do vetor(Quantidade de informações)*/
    while (file.available()) {
      if(file.read() == '\n'){
        tamVetor++;
      }
    }
    char vetor[tamVetor]; /*Vetor Total*/
    
    /*Varredura dos txt*/
    while (file.available()) {
      tamLinha++;
      letra = file.read();
      linha += letra; /*Transformando linha em string*/
      if(letra == '\n'){
        char linhaChar[tamLinha];
        linha.toCharArray(linhaChar, tamLinha); /*transformando string em char*/
        vetor[countLinha] = linhaChar; /*salvando linha na posição correspondente do vetor*/
        countLinha++;
        /*resetando variáveis*/
        String linha = "";
        char letra;
        int tamLinha = 0;
      }
    }

    /*Imprimindo no serial as posições do vetor*/
    for (int i = 0; i <= tamVetor; i++) {
      Serial.println(vetor[i]);
    }

    /*Fechando txt*/
    file.close();
    
  }
  else{
    Serial.println("Erro ao abrir o arquivo");
  }
}
void loop(){
  
}

Boa tarde pessoal, sou iniciante com arduino, e comecei a fazer alguns testes com o modulo de cartao sd.

Estou tentando ler linha por linha de um arquivo de texto do meu sd card e então salvar cada linha em uma posição do vetor, porém quando efetuei o primeiro teste no código, percebi que não poderia salvar uma string em um posição do vetor, então tentei transformar minha string em um char usando o ".toCharArray", mas não funcionou da forma como deveria, alguém poderia me ajudar?

O print do arquivo de texto e do serial está em anexo

Screenshot_1.png

Screenshot_1.png

Um problema óbvio é que estás a correr o ficheiro duas vezes e a assumir que ele volta ao inicio...

O outro erro que fazes é contares o número de linhas no ficheiro em vez do número de caracteres que estão presentes no ficheiro.

Podes tentar entre os dois ciclos while reposicionar o apontador de leitura do ficheiro com o método seek(0).

As variáveis do tipo string podem ser impressas também... logo a maior parte do teu código não faz sentido. Da mesma forma não precisas de correr as posições todas dum array para o mandar para a porta série desde que tenhas em atenção e terminares o array com '\0'.

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.