Advertisement
Guest User

SD Read

a guest
Oct 14th, 2020
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 0
  1. #include <SPI.h>
  2. #include <SD.h>
  3.  
  4. File myFile;
  5.  
  6. /* Array para armazenar os dados que estão no SD Card,
  7.   linha por linha ou separado entre ponto e vírgula. */
  8. int DADOS_SD[5];
  9.  
  10. void setup() {
  11.   Serial.begin(9600);
  12.  
  13.   Serial.print("Iniciando SD card... ");
  14.  
  15.   if (!SD.begin(4)) {
  16.     Serial.println("Falha ao iniciar!");
  17.     while (1);
  18.   }
  19.  
  20.   Serial.println("Iniciado!");
  21.  
  22.   // mult.log ou unic.log
  23.   dadosArquivoParaArray("mult.log");
  24.  
  25.   // Esse laço vai mostrar os valores em cada posição do array
  26.   for (int i = 0; i < 5; i++) {
  27.     Serial.println("DADOS_SD[" + String(i) + "] = " + DADOS_SD[i]);
  28.   }
  29. }
  30.  
  31. void loop() {}
  32.  
  33. void dadosArquivoParaArray(String arquivo) {
  34.   // Para definir a posição do array em que o valor vai ser salvo
  35.   int indice = 0;
  36.   // Para amazenar cada valor lido e ser convertido para inteiro e ser guardado no array
  37.   String valorLido = "";
  38.  
  39.   myFile = SD.open(arquivo);
  40.  
  41.  
  42.   if (myFile) {
  43.     Serial.println("Lendo arquivo " + arquivo);
  44.  
  45.     /* É bom observar que a leitura é feita de caracter individual, então melhor analisar
  46.       de um por um, e fazer a separação dos dados que devem ser armazenados */
  47.     while (myFile.available()) {
  48.  
  49.       char c = char(myFile.read());
  50.  
  51.       // Se o caractere ponto e virgula ou quebra de linha for encontrado,
  52.       // Vamos incrementar o array com o valor atual e limpar a string
  53.       // para receber o novo valor e também incrementar o indice para um novo valor no array
  54.       if (c == ';' || c == '\n') {
  55.         DADOS_SD[indice] = valorLido.toInt();
  56.         valorLido = "";
  57.         indice++;
  58.       } else {
  59.         // Caso contrário, apenas incrementa a string para acumular o valor que deve ser salvo
  60.         valorLido += c;
  61.       }
  62.     }
  63.  
  64.     // Como os últimos valores são ignorados no while, basta pegar eles e adicionar
  65.     // ao array já que antes de sair do while o indice também foi incrementado
  66.     DADOS_SD[indice] = valorLido.toInt();
  67.  
  68.     myFile.close();
  69.   } else {
  70.     Serial.println("Erro ao abrir " + arquivo);
  71.   }
  72. }
  73.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement