Fala pessoal,

Sei que o Arduíno é limitado quanto a algumas coisas, e uma delas é a forma de se fazer Split() de Strings. Tenho um projetinho no Arduíno onde gostaria de enviar comandos via serial. Um exemplo bem simples seria: ligar o led 13 por 30 segundos, e gostaria de enviar pela serial da seguinte forma: LIGAR,13,30 e através do meu código no arduino, ele separar os comandos que estão separados por virgula, ponto e virgula ou qualquer outro delimitador. Existe alguma biblioteca para isto ou alguma forma de codificar?

Grato

Exibições: 2677

Responder esta

Respostas a este tópico

Procure por strok()

http://www.br-c.org/doku.php?id=strtok

É nativa da linguagem C.

Ainda que nunca tenha usado... Quando fazia criava a minha propria rotina com um loop for dentro da string.

Um array com linhas e colunas a cada "," trocava a linha e zerava a coluna. A saída era uma palavra por linha. Sempre acreditei que fazendo na unha as coisas ficam mais eficientes. Sempre trabalhei com microcontroladores muito inferiores aos Atmega (8051, por ex) entrao a preocupação com gastar memoria incluindo libs e tempo de execução era maior. Hj em dia se gasta 16 bits pra contar até 5 e tudo bem... Antigamente era tudo contadinho... Enfim, textão para rebater o "Arduino é limitado". O Arduino abriu os limites !!! Só não queria processar video com ele...

kkkkk disse "limitado" no sentido figurado, sei que ele é um microcontrolador bem poderosinho rsrs mas obrigado pela resposta. Vou dar uma estudada no strok(). mas fiquei curioso com o código que vc mesmo criou com esse loop. Pode me mandar pra eu testar ele também?

Grato

Procurei aqui e não achei... Vou ver depois com mais calma, mas achei outro. Esse lê um teclado matricial e manda pela serial o resultado, le outra serial com um GPS e manda para o outro microcontrolador (um overo da gumstix) só as strings uteis (limpa o lixo), e ainda le um chaveiro de controle de portão.

Faz tudo isso basicamente sem includes, só usa o math.h.

Não era frescura, simplesmente não existiam bibliotecas para incluir.

Sim, para conversao decimal por ex existia, mas quando vc incluia via sua memoria desaparecer. O microcontrolador usado era um C8051F340que tinha muita memoria flash mas a ram interna era pequena. Soluções que consumissem flash e economizassem memoria interna (iram) eram otimas. Tinha memoria interna do tipo xdata tb (ponteirada) de outro tipo, mas aih já consumia mais tempo de processamento acessar... Enfim.

Ta uma bagunça, tem partes de outro programa tb pq essa é uma versão modificada e tal, mas fazer o que... É só a titulo de curiosidade.

Anexos

Olá Charles

A classe String, que é nativa da plataforma Arduino, possui vários métodos úteis, como substring, charAt, etc.

No entanto não tem um método "split", comum em outras linguagens. Veja aqui

Existe uma library que faz isso, mas não gera um array com o resultado. Você deve percorrer a String e processá-la.

https://github.com/syalujjwal/Arduino-StringTokenizer-Library

Obrigado José, já é mais uma nova fonte para estudo, vou dar uma sapeada e desenvolver meu método para processar a String.

Obrigado

vc conseguiu desenvolver algo ? tenho um projeto desse ... vou tentar postar depois p vc .

Olá Soares,

Fiz algo que deu certo, mas não é ainda o que eu preciso. Fiz um loop percorrendo uma String procurando um delimitador, e enquanto não achasse, ia adicionando o carácter a uma variável e em seguida retornava a variável.

Se puderes postar seu código, acho que poderia complementar ou melhorar o meu.

Me tira uma pequena dúvida, vc quer manda um comando pela serial, validar e executar uma função, correto ?

sim, um exemplo bem simples, vamos supor que eu queira ativar a saida digital 13 por 30 ou 40 ou qualquer tempo, mandaria para a serial assim LIGAR,13,30 ou LIGAR,13 ou  DESLIGAR,13

Desculpa a demora, fiz um arquivo agora pra vc .

aconselho a criar um padrão para executar funções, tipo : "FUNÇÃO, VALOR1, VALOR2"
vai das suas necessidades, apenas crie um padrão p vc trabalhar .

vc pode usar esse mesmo metodo com qualquer dispositivo serial, pode usar Bluetooth , telas com comunicação via serial ....

At+

Anexos

Obrigado Soares, vou testar ele aqui e te falo

te agradeço a atenção hehe

Depois me fala se conseguiu ou não. Ok ?

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço