Olá pessoal, estou trabalhando em um projeto cuja o objetivo é fazer com que o arduíno efetue a leitura de um arquivo .txt. O arquivo texto contém o seguinte conteúdo:

Linha0: a658
Linha1: j651

Linha2:e687

Linha3:t329

...

Necessito que no Arduíno ao ser pressionado um botão push button leia a linha 0, armazene em uma variável este conteúdo apenas da linha 0, imprima este conteúdo no monitor serial do Arduíno e após alguns segundos efetue um delete apenas na linha0. Ao pressionar o push button novamente ele irá ler a linha1 e efetuar o mesmo processo de armazenamento de valor em variável, impressão e delete da mesma e assim sucessivamente nas linhas seguintes.

Em resumo ele irá ler sempre a primeira linha do arquivo, armazenar em variável esse conteúdo, imprimir no monitor serial e apagar esta primeira linha para que não haja reimpressão do conteúdo.

Através de tutoriais na internet consigo ler, gravar arquivos no SD card, entretanto, buscar essa informação de linha específica não encontrei nada. acredito ser uma limitação na biblioteca SD mais acredito que através de um laço de repetição isso seja possível.

Muito Obrigado.

Abraços a todos!

Exibições: 1949

Responder esta

Respostas a este tópico

Bom dia,

porque você precisa deletar a linha do arquivo .txt.

Você pode, usando as " File Class",  ir avançando cada linha após cada leitura da linha anterior.

RV

Bom dia, obrigado pela leitura de meu tópico.

Necessito que seja apagada para que em caso de reset do arduino nao haja repetição de linhas que ja foram utilizadas.

Você teria um exemplo de sketch que contenha File Class ? para que eu possa efetuar alguns testes.

Muito Obrigado

FA,

tente fazer assim

Após cada linha do arquivo que for lida, salve o numero da linha na EEPROM,

assim se faltar energia, ou se for dado reset no arduino, saberá qual foi a ultima linha lida.

RV

Entendi sua lógica, entretanto, não sei como realizar isso.

Necessito de um exemplo que efetue a leitura das linha (File Class) para que depois possamos abordar essa estratégia de gravar o número da linha na EEPROM.

Obrigado

FA, 

que sketrch vc já tem pronto?

RV

Olá, tenho apenas um exemplo que encontrei de testes na internet para me certificar que as conexões e leitores estão corretos.

O exemplo se encontra no site:

https://ardudino.wordpress.com/2015/12/10/modulo-sdcard-no-arduino/

aqui em laboratório esta em funcionamento como no exemplo deste site, entretanto esse sketch faz coisas que não necessito, mais serviu de exemplo e testes iniciais.

Obrigado

Boa noite RA.

Veja se este sketch te ajuda.

RV

Anexos

Bom dia, irei estudar seu sketch e efetuar os testes em breve, postarei aqui duvidas e eventuais dificuldades, a principio, analisando seu sketch rapidamente irá ajudar muito pois armazena o valor da linha na EEPRON.

Muito Obrigado.

Abraços

FA,

Recomendações:
1. Remova seu sketch da área de texto do seu tópico;
2. Leia http://labdegaragem.com/forum/topics/sugest-o-de-como-postar
3. Comente as linhas do seu sketch. Fica mais fácil entender o que vc quer fazer com         cada linha e facilita para que possamos ajuda-lo.
4. Clique em : " Deseja carregar arquivos? " e depois em " Escolher arquivo" e anexe o       arquivo com o seu sketch.

RV

Olá RV, efetuei upload de seu sketch no arduino uno e funcionou em partes, realizou a leitura das linhas e exibiu no monitor serial, entretanto, ele faz a leitura de todo o conteúdo do arquivo texto contido no sd card sem que eu aperte o push button, realizei algumas alterações no sketch adicionando um led para verificar se ao pressionar o push button o arduino esta interpretando esta ação e parece que ele não executa ou não entra no void loop pois não acende o led de testes que adicionei, as alterações que realizai estão entre marcações:

///-

alteração

///-

segue em anexo ao post o sktech e os resultados de saída no monitor serial.

Obrigado

Anexos

FA, bom dia.

Algumas considerações:

Primeiro sobre o meu code:

Esta linha: #define botao 7  define que o botão deverá ser ligado no port 7;

Esta linha na função setup(): pinMode(botao, INPUT_PULLUP);

  estabelece que é para usar o resistor interno de pull_up do arduino.

  Isto significa que se não ligar nada no port, ele terá +5V. (HIGH)

 Para leva-lo a LOW, basta levar o port para GND, 

  portanto o botão deve ser ligado assim:

  Um lado no port 7 e o outro em Gnd.

  Acredito que vc tenha ligado de outra forma, e o code está reconhecendo ele como estive sempre apertado.

Usando o code que escrevi e ligando o botão deste modo, veja se funciona.

RV

Boa Tarde RV efetuei a remoção do resistor do push button conforme sua orientação, agora um pino do push button esta ligado na porta 7 diretamente e o outro pino esta ligado no GND digital, entretanto a saída na porta serial continua exibindo todas as linhas sem parar.

Apos terminar de ler as linhas rapidamente ate chegar na ultima ele imprime o nome do arquivo arduino.txt repetidas vezes sem parar em loop.

Obrigado

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço