Ajuda com SDcard criando pasta com arquivos e escrevendo nos arquivos enquanto não for criado nova pasta

Preciso de uma ajuda, estou num projeto e não estou conseguindo seguir em frente, sou novo no Arduino uno. Detalhes do projeto:

1 - Terá 2 botões no projeto, onde 1 ao pressionar vai criar uma pasta com numero e um arquivo onde este terá de ficar armazenando as informações enviadas de um sensor toda vez que pressionar o segundo botão e enquanto não for criado uma nova pasta. (Parte de criação de pasta e o arquivo dentro consegui fazer, ainda não consegui escrever nesse arquivo atual).

2 - Se caso o Arduino for desligado ou reiniciado não posso voltar no primeiro arquivo sobrescrevendo, preciso ver qual a ultima pasta e arquivo desta que tem no SDcard e criar uma nova pasta depois dela. EX: estava na pasta 4 ai desliguei o arduino quando ligar preciso que seja criada a pasta 5 e esta continuar recebendo os dados enviados pelo sensor toda vez que pressionar botão.

Abaixo segue o que fiz até o momento, desde já agradeço, com certeza quem já domina programar será simples isso mas estou desenvolvendo aos poucos hehehe.

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

#define pot A0
#define btCriarPasta 2
#define btSalvaMedida 3

bool flag = 0x00;
bool flag2 = 0x00;
int sensor;
int numA = 1;

File dataFile;

const int chipSelect = 10;

void setup() {
//====define o modo dos pinos====
pinMode(btCriarPasta, INPUT_PULLUP);
pinMode(btSalvaMedida, INPUT_PULLUP);
pinMode(pot, INPUT);

Serial.begin(9600);
while (!Serial) {
;
}
Serial.print(“Inicializando SD card…”);

if (!SD.begin(chipSelect)) {
Serial.println(“Card falhou, ou nao esta presente”);
while (1);
}
Serial.println(“card inicializado.”);
}

void loop() {

String dataString = “”;

sensor = analogRead(pot);
dataString += String(sensor);

if(!digitalRead(btCriarPasta)){
    flag = 0x01;
  }
  //=====logica para criar uma pasta com um novo arquivo
  //=====sera usada toda vez que concluir a coleta de dados 
  //=====do trabalho anterior
 if(digitalRead(btCriarPasta) && flag){
    SD.mkdir("/local"+String(numA));
    if(SD.exists("/local"+String(numA))){
    dataFile = SD.open("/local"+String(numA)+"/dados.txt", FILE_WRITE);
    Serial.println("Pasta criada com sucesso");
    numA++;
    }else{
        Serial.println("nao criou pasta");
      }
    flag = 0x00;
  }//fim da criação de nova pasta

  if(!digitalRead(btSalvaMedida)){
      flag2 = 0x01;
    }
  //====logica para salvar a medida no momento atual dentro
  //====do arquivo que esta na pasta atual enquanto nao for
  //====criada uma nova pasta
  if(digitalRead(btSalvaMedida) && flag2){
    if(SD.exists("/local"+String(numA))){
      SD.open("/local"+String(numA)+"/dados.txt");
          if (dataFile) {
               dataFile.println(dataString);
               dataFile.close();
               Serial.println(dataString);
          }else {
            Serial.println("nada para gravar");
          }
        }
        else{
          
       Serial.println("E necessario criar uma pasta"); 
      }
      flag2 = 0x00;
    }//fim if de comparacao do botao

delay(1000);
}

Boa tarde.
E qual sua dificuldade?
RV mineirin

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